String Array Pointer
String Array Pointer
Hallo zusammen
Hab mal ne Frage zu nem String Pointer.
Würde gerne ein String array an eine Prozedur übergeben...
In der Prozedur möchte ich dann den Inhalt des String arrays
per PeekS() aus lesen...
Wenn ich die Pointer der einzelnen Arrayelemente übergebe ist ok, aber mit dem ganzen Array Krieg ich es leider nicht so ganz hin.
Vielen Dank im vorraus
Hab mal ne Frage zu nem String Pointer.
Würde gerne ein String array an eine Prozedur übergeben...
In der Prozedur möchte ich dann den Inhalt des String arrays
per PeekS() aus lesen...
Wenn ich die Pointer der einzelnen Arrayelemente übergebe ist ok, aber mit dem ganzen Array Krieg ich es leider nicht so ganz hin.
Vielen Dank im vorraus
PeekS macht nichts anderes, als einen Speicherbereich vom Startpointer bis zum stringterminierenden \0 zurueckzugeben. Jeder String im Array hat seinen eigenen Speicherbereich und somit Startpointer. Du kannst also nicht einfach ein komplettes Array ausgeben, sondern nur die Elemente selbst (wie Du ja schon festgestellt hast).
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
im array selber stehen die stringpointer.
du kannst also den pointer zum array übergeben,
und in der proc kannst du aus dem ziel des arraypointers den stringpointer lesen
und von dort holst du den string mit PeekS.
dann erhöhst du den Arraypointer um 4, um dir den nächsten stringpointer holen zu können.
das ganze natürlich nur so oft, wie elemente vorhanden sind.
du kannst also den pointer zum array übergeben,
und in der proc kannst du aus dem ziel des arraypointers den stringpointer lesen
und von dort holst du den string mit PeekS.
dann erhöhst du den Arraypointer um 4, um dir den nächsten stringpointer holen zu können.
das ganze natürlich nur so oft, wie elemente vorhanden sind.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
So hab ich das immer gehandhabt:
Ich hoffe, das hilft dir.
Mfg
leonhard
Code: Alles auswählen
; Autor: leo.tiger ALIAS 'leonhard' + Schick
;/ Array-Macros für Arrays mit
Macro NewArray(StructureName, Elements)
AllocateMemory(SizeOf(StructureName)*(Elements+1))
EndMacro
Macro FreeArray(ArrayPointer)
FreeMemory(ArrayPointer)
EndMacro
Macro GetArrayElement(ArrayPointer, StructureName, Element)
ArrayPointer+(SizeOf(StructureName)*Element)
EndMacro
Dim Array.s(3)
Array(0) = "Hallo"
Array(1) = ","
Array(2) = "Welt"
Array(3) = "!"
Procedure.s GetArrayItem(*Array, Element)
Protected *Element.String = GetArrayElement(*Array, String, Element)
ProcedureReturn *Element\s
EndProcedure
Define i.l
For i = 0 To 3
Debug GetArrayItem(@Array(), i)
Next i
Mfg
leonhard
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Warum so kompliziert ?
Code: Alles auswählen
Dim Array.s(3)
Array(0) = "Hallo"
Array(1) = ","
Array(2) = "Welt"
Array(3) = "!"
Procedure.s GetArrayItem(feld$(1), Element) ;oder auch feld.s(1), Element
ProcedureReturn feld$(element) ;oder auch feld.s(Element) ist egal
EndProcedure
Define i.l
For i = 0 To 3
Debug GetArrayItem(Array.s(), i)
Next i
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22