Seite 10 von 18

Verfasst: 31.08.2009 13:36
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.

Verfasst: 31.08.2009 18:01
von Little John
2Andre:
Danke, dass Du das in die Hilfe übernommen hast.

Gruß, Little John

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

Verfasst: 14.10.2009 14:33
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

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

Verfasst: 14.10.2009 16:37
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

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

Verfasst: 14.10.2009 16:51
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

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

Verfasst: 24.10.2009 11:53
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

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

Verfasst: 06.12.2009 13:56
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.

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

Verfasst: 17.12.2009 12:45
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.

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

Verfasst: 25.12.2009 15:55
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

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

Verfasst: 15.02.2010 16:51
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