Verfasst: 22.06.2007 20:05
Der Beschreibung nach ist das ein Fall für XML 

Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Structure udtDaten
lVal.l
fltVal.f
EndStructure
Structure udtDatenArray
ds.udtDaten[0]
EndStructure
; Speicher anfordern
*daten.udtDatenArray = AllocateMemory(10000 * SizeOf(udtDaten))
For i = 1 To 10000
With *daten
\ds[i]\lVal = i
\ds[i]\fltVal = i / 100.0
EndWith
Next
For i = 1 To 10000 Step 100
With *daten
Debug \ds[i]\lVal
Debug \ds[i]\fltVal
EndWith
Next
Das ist genau was ich brauche, cool. Muss ich mir nur mein eigenes ReDim programmieren, was halt den Speicher allokiert und wieder freigibt, aber das ist ja kein Problem. Thx.mk-soft hat geschrieben:Code: Alles auswählen
Structure udtDaten lVal.l fltVal.f EndStructure Structure udtDatenArray ds.udtDaten[0] EndStructure ; Speicher anfordern *daten.udtDatenArray = AllocateMemory(10000 * SizeOf(udtDaten)) For i = 1 To 10000 With *daten \ds[i]\lVal = i \ds[i]\fltVal = i / 100.0 EndWith Next For i = 1 To 10000 Step 100 With *daten Debug \ds[i]\lVal Debug \ds[i]\fltVal EndWith Next
Code: Alles auswählen
; Strukturen
Structure udtDaten
lVal.l
fltVal.f
strVal.s
EndStructure
Structure udtDatenArray
ds.udtDaten[0]
EndStructure
; Compiler erwingen '_SYS_FreeString@4' anzulegen
Procedure Dummy()
Protected Dummy.s
Dummy = ""
EndProcedure
; String speicher komplett freigeben
Procedure FreeString(*Adr)
!PUSH dword [p.p_Adr]
!CALL _SYS_FreeString@4
EndProcedure
; -------------------------------------------------------------------
; Speicher anfordern
*daten.udtDatenArray = AllocateMemory(10000 * SizeOf(udtDaten))
; Daten füllen
For i = 0 To 9999
With *daten
\ds[i]\lVal = i
\ds[i]\fltVal = i / 100.0
\ds[i]\strVal = "Wert: " + Str(i)
EndWith
Next
; Daten ausgeben
For i = 0 To 9999 Step 100
With *daten
Debug \ds[i]\lVal
Debug \ds[i]\fltVal
Debug \ds[i]\strVal
EndWith
Next
; Speicher freigeben
For i = 0 To 9999
FreeString(@*daten\ds[i]\strVal)
Next
FreeMemory(*daten)
Code: Alles auswählen
;; String speicher komplett freigeben
Procedure FreeString(*Adr)
Protected Dummy.s
!PUSH dword [p.p_Adr]
!CALL _SYS_FreeString@4
EndProcedure