Verfasst: 14.02.2005 22:34
Wie soll man es denn sonst machen? Glaubst du, jeder Entwickler hat auf seinem PC ein dutzend Windows-Versionen installiert?!
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Was soll das denn? GPI sagt doch schon seit Ewigkeiten, dass man sowas nachschlagen soll. Plötzlich stimmst du ihm zu, aber nicht so, dass ers gleich merken kann, und regst dich dann dauf, wenn er sich wiederholt...Glaubst du, jeder Entwickler hat auf seinem PC ein dutzend Windows-Versionen installiert?!
- 'a' liefert ASCII-Code
Anstatt mit Asc("c") kann man auch ganz einfach 'c' verwenden.
Bsp:
String.s = "hallo"
*p.BYTE = @String
While *p\b
If *p\b = 'l'
Debug Chr(*p\b)
EndIf
*p + 1
Wend
Man kann bis zu 4 Zeichen (4 Bytes) innerhalb der '' schreiben (die 4 Bytes werden in umgekehrter Reihenfolge gespeichert).
Bsp:
a.l = 'abcd'
For z = 0 To 3
Debug Chr(PeekB(@a + z))
Next
Code: Alles auswählen
sDummy.s = "Hallo"
Debug Str(sDummy)
Debug @sDummy
Ach, das ist absicht o_O? Das ist mir schon öfters aufgefallen... Hab es für ein Schönheitsfehler gehalten...Kiffi hat geschrieben:Wird Str() auf einen String angewendet, so liefert die Funktion den Zeiger der Variable zurück.
Code: Alles auswählen
;- Array-Size
Dim A.l(9)
Dim B.l(9,9)
Dim C.l(9,9,9)
Debug "ARRAY-SIZE"
Debug "Size (9) : " + Str(PeekL(@A()-8))
Debug "Size (9,9) : " + Str(PeekL(@B()-8))
Debug "Size (9,9,9) : " + Str(PeekL(@C()-8))
Debug ""
;- Array-Type
Dim ArrayB.b(0)
Dim ArrayW.w(0)
Dim ArrayL.l(0)
Dim ArrayF.f(0)
Dim ArrayS.s(0)
Dim ArrayPOINT.POINT(0)
Dim ArrayLONG.LONG(0)
Debug "ARRAY-TYPE"
Debug "Byte: " + Str(PeekL(@ArrayB()-4))
Debug "Word: " + Str(PeekL(@ArrayW()-4))
Debug "Long: " + Str(PeekL(@ArrayL()-4))
Debug "Float: " + Str(PeekL(@ArrayF()-4))
Debug "String: " + Str(PeekL(@ArrayS()-4))
Debug "Structure: " + Str(PeekL(@ArrayPOINT()-4))
Debug "Structure: " + Str(PeekL(@ArrayLONG()-4))
;/ the values of the types:
#Array_Type_Byte = 1
#Array_Type_Word = 3
#Array_Type_Long = 5
#Array_Type_Float = 9
#Array_Type_String = 8
#Array_Type_Structure = 7
;- Array as Procedure-Parameter (of fixed type, but changeable size)
Procedure TestProc(*arr.l)
Dim LocalArray.l(0) ; dimensionate it to 0
FreeMemory(@LocalArray()-16) ; free it (these few bytes ;-) )
LocalArray() = *arr ; let it point to the overgiven array
Debug LocalArray(12) ; play with it (OutOfBounds is caught by the debugger!)
EndProcedure
Dim MyArray.l(20)
MyArray(12) = 777
TestProc(@MyArray())
MyArray(12) = 888
TestProc(@MyArray())
Code: Alles auswählen
Dim LocalArray.l(0)
FreeMemory(@LocalArray()-16) ; optional
Soweit ich weiß, wird es für einige Libs so benötigt.Kiffi hat geschrieben:> Ach, das ist absicht o_O?
keine Ahnung. Es ist aber undokumentiert
Grüße ... Kiffi