Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Mok hat geschrieben:Ja, ok, aber ANY heißt auf deutsch soviel wie "irgendwas", ist es logisch, dass man bei KeyboardPushed(#PB_Any) eben "irgendwas" drücken muss.
definitiv nicht!
alle Konstanten für die Keyboard-Lib beginnen mit #PB_Key_
man könnte jetzt drüber disputieren, ob die Konstante eher #PB_Key_Any statt #PB_Key_All heißen sollte,
(weil man ja irgendeine Taste drücken muss und nicht Alle auf einmal)
aber dass die Konstante #PB_Any ohne _Key_ dort nichts zu suchen hat, ist logisch.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

2Andre:
Danke, dass Du das in die Hilfe übernommen hast.

Gruß, Little John
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von HeX0R »

AES Decoder()
Das Ergebnis ist kein String, sondern die Anzahl Bytes, die in *Ausgabe kopiert wurden.

AES Encoder()
Das Ergebnis ist kein String, sondern die Anzahl Bytes, die in *Ausgabe kopiert wurden.
Ausserdem finde ich es etwas seltsam, dass die Beispiele nur im Ascii-Modus funktionieren.
Ich weiss, das steht sogar dabei, aber das macht es auch nicht besser.

Hier das 1. Beispiel mal so umgewandelt, dass man es sowohl im Ascii- als auch im Unicode-Modus kompilieren kann:

Code: Alles auswählen

;Example CBC
String$ = "Hello this is a test for AES"

*CipheredString   = AllocateMemory(StringByteLength(String$))
*DecipheredString = AllocateMemory(StringByteLength(String$))

If AESEncoder(@String$, *CipheredString, StringByteLength(String$), ?Key, 128, ?InitializationVector)
	Debug "Ciphered: " + PeekS(*CipheredString, -1, #PB_Ascii)

	L = AESDecoder(*CipheredString, *DecipheredString, StringByteLength(String$), ?Key, 128, ?InitializationVector)
	Debug "Deciphered: " + PeekS(*DecipheredString, L / SizeOf(CHARACTER))
EndIf

End

DataSection
	Key:
	Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06

	InitializationVector:
	Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
Little John

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von Little John »

HeX0R hat geschrieben:Hier das 1. Beispiel mal so umgewandelt, dass man es sowohl im Ascii- als auch im Unicode-Modus kompilieren kann:

Code: Alles auswählen

[...]
	Debug "Ciphered: " + PeekS(*CipheredString, -1, #PB_Ascii)
Das Beispiel ist immer noch nicht gut. Vielleicht funktioniert der Code in diesem speziellen Fall (hab's nicht getestet), aber grundsätzlich kann der Speicherbereich auf den *CipheredString zeigt Null-Bytes enthalten. Daher kann PeekS() nicht zuverlässig verwendet werden (siehe auch hier), und sollte deshalb auch nicht in so einem Lehrbeispiel in der Hilfe stehen.

Gruß, Little John
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von HeX0R »

Jo, da gehört eigentlich noch ein Base64 dahinter.

Hau rein! :mrgreen:

[Edit]

O.k., hier mal ein besseres Beispiel:

Code: Alles auswählen

EnableExplicit

Procedure.s AES_String_Encode(String.s, *Key, Bits, *InitializationVector, Mode = #PB_Cipher_CBC)
	Protected *Output, Length, i, *Buffer, Result.s
	
	*Output = AllocateMemory(StringByteLength(String) * 2)
	Length  = AESEncoder(@String, *Output, StringByteLength(String), *Key, Bits, *InitializationVector, Mode)
	If Length
		*Buffer = AllocateMemory(StringByteLength(String) * 2)
		i       = Base64Encoder(*Output, Length, *Buffer, MemorySize(*Buffer))
		Result  = PeekS(*Buffer, i, #PB_Ascii)
		FreeMemory(*Output)
		FreeMemory(*Buffer)
	EndIf
	
	ProcedureReturn Result
EndProcedure

Procedure.s AES_String_Decode(String.s, *Key, Bits, *InitializationVector, Mode = #PB_Cipher_CBC)
	Protected *Output, Length, i, *Buffer, Result.s
	
	*Buffer = AllocateMemory(StringByteLength(String, #PB_Ascii) + 1)
	*Output = AllocateMemory(StringByteLength(String, #PB_Ascii) * 2)
	PokeS(*Buffer, String, -1, #PB_Ascii)
	i       = Base64Decoder(*Buffer, MemorySize(*Buffer) - 1, *Output, MemorySize(*Output))
	*Buffer = ReAllocateMemory(*Buffer, i * 2)
	Length  = AESDecoder(*Output, *Buffer, i, *Key, Bits, *InitializationVector, Mode)
	If Length
		Result = PeekS(*Buffer, Length / SizeOf(CHARACTER))
	EndIf
	FreeMemory(*Output)
	FreeMemory(*Buffer)
	
	ProcedureReturn Result
EndProcedure

;Example
Define String$, a$
String$ = "Hello this is a test for AES...¿"
a$ = AES_String_Encode(String$, ?Key, 128, ?InitializationVector)
Debug a$
Debug AES_String_Decode(a$, ?Key, 128, ?InitializationVector)

End

DataSection
	Key:
	Data.b $06, $a9, $21, $40, $36, $b8, $a1, $5b, $51, $2e, $03, $d5, $34, $12, $00, $06

	InitializationVector:
	Data.b $3d, $af, $ba, $42, $9d, $9e, $b4, $30, $b4, $22, $da, $80, $2c, $9f, $ac, $41
EndDataSection
Little John

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von Little John »

FillArea()
Hilfe von PB 4.40 Beta 5 hat geschrieben:Wenn als Parameter 'RandFarbe' -1 angegeben wird, dann wird die Fläche - welche von der an den (x,y) Koordinaten gefundenen Farbe definiert wird - gefüllt.
Diese Beschreibung ist IMHO kaum verständlich.

Ich meine, es sollte etwa so heißen:
Wenn als Parameter 'RandFarbe' -1 angegeben wird, dann wird jede Farbe die sich von der Farbe am Punkt (x,y) unterscheidet als 'Randfarbe' behandelt.
Gruß, Little John
Andesdaf
Moderator
Beiträge: 2671
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von Andesdaf »

AddWindowTimer()
Letzter Absatz hat geschrieben:Timer sind daher nicht geeignet für exaktes Timing (Zeitsteuerung), sondern eher gedacht für das Ausführen regelmäßiger Aufgaben wie das Aktualisieren eines Gadget-Inhalts oder ähnlich.
"Ähnlich" klingt in diesem Fall doof, es sollte lieber "oder Ähnliches" heißen.
Win11 x64 | PB 6.20
Benutzeravatar
KatSeiko
Beiträge: 367
Registriert: 19.07.2008 07:47

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von KatSeiko »

Ich weiß nicht, ob das schon mal angesprochen wurde.. Wenn man in der Hilfedatei (F1) auf der Haupt-Referenzseite auf Andere klickt, gibt es unten keinen Rückverweis mehr. Der Verweis fehlt auch, wenn man von da aus den Links für Break, Variable, Array, LinkedList oder Map folgt. Zumindest bei Array, LinkedList und Map wär es sehr hilfreich, wenn man mit einem Klick in die jeweilige Kategorie kommt. ProgramExitCode() hat als einziger Verweis einen Link für die Kategorie.
Win7 Ultimate x64, PureBasic 5.11

There is no substitute..
BildBildBild
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.

Beitrag von CSHW89 »

hey leute,
ich bin grad mehr als zwei stunden an so ein scheiß problem verzweifelt um am ende festzustellen, dass das was ich probiert habe gar nicht geht: hab versucht auf einer 3d-welt (RenderWorld() etc...) "StartDrawing(ScreenOutput())" aufzurufen. In der Hilfe zu RenderWorld() steht nur, dass Sprite3D nicht unterstützt wird, nicht aber die 2D-Drawing Befehle. Sollte mal geändert werden.
Danke schon mal.
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen

Beitrag von Vera »

Hallo,

mir ist wiedermal aufgefallen, wie wichtig doch die History- / Geschichte-Seite ist, und dass man diese auch online zur Verfügung stellen sollte. Deswegen möchte ich den Vorschlag machen, auf der Reference-Seite unter Overview / Übersichten die Geschichte mit zu verlinken.

Ebenso fände ich auch eine Index-Seite zu allen Examples / Beispielen hilfreich, nicht nur, um einen Gesamtüberblick darüber zu haben, sondern um diese zügig durchblättern zu können.

Aus gegebenem Anlass hab ich mir die Beispiele mal gemeinsam in eine separate CHM-Hilfe gepackt - wer mag, kann sich diese runterladen: PB-Examples_v441.chm
oder alternativ als reine Browserversion: PB-Examples_v441.zip (framed mit linksseitigem Index, oder frameless via Index.html)

Gruß ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten