Structure + Memory + WriteData
Structure + Memory + WriteData
Hallo,
Kann man Memory-Bereiche (mit AllocateMemory)
auch in Structuren unterbringen ?
Ich habe 3 unterschiedliche große Bereiche, die ich gerne
in eine Structure reinschreiben und dann mit WriteData()
mit einem Rutsch in eine Datei schreiben und später auch
mit ReadData ()wieder lesen will.
Geht sicher auch mit FileSeek() zu Fuß, möchte das aber
gerne umgehen.
Kann man Memory-Bereiche (mit AllocateMemory)
auch in Structuren unterbringen ?
Ich habe 3 unterschiedliche große Bereiche, die ich gerne
in eine Structure reinschreiben und dann mit WriteData()
mit einem Rutsch in eine Datei schreiben und später auch
mit ReadData ()wieder lesen will.
Geht sicher auch mit FileSeek() zu Fuß, möchte das aber
gerne umgehen.
PB 6.10
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Structure + Memory + WriteData
Entweder den Memory gleich beim erstellen strukturieren:
*memory.mystructure = AllocateMemory...
oder in der Hilfe mal unter CopyMemory nachsehen.
Bei Strukturen mit Strings (nicht Fixstrings) wird das aber nicht funktionieren!
Gruß
Thomas
*memory.mystructure = AllocateMemory...
oder in der Hilfe mal unter CopyMemory nachsehen.
Bei Strukturen mit Strings (nicht Fixstrings) wird das aber nicht funktionieren!
Gruß
Thomas
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Structure + Memory + WriteData
in der Struktur selber könntest du mit einem Array von Longs einen dementsprechend großen Abschnitt einplanen.
zugriff darauf erhältst du mit pointer auf das Element und OffSetOf...
Code: Alles auswählen
Structure RecSet
Num.l
XPos.l
YPos.l
Dat.l[512] ; 2MB pro Element
EndStructure
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Structure + Memory + WriteData
Vielleicht hab ich das auch jetzt verkehrt verstanden.H.Brill hat geschrieben:Hallo,
Kann man Memory-Bereiche (mit AllocateMemory)
auch in Structuren unterbringen ?
Strukturierte Variablen sind im Endeffekt nichts anders als Memory!
Lediglich bei Strings ist aufzupassen.
Re: Structure + Memory + WriteData
Dachte, man könnte evtl. mit Define
vorher was definieren. Etwa so :
Dann halt mit WriteData(0, *MyStruct, SizeOf(*MyStruct))
in eine Datei schreiben.
Aber mit nem Array in der Structure könnte es auch gehen.
vorher was definieren. Etwa so :
Code: Alles auswählen
Define.l bereich1 = AllocateMemory(200)
Define.l bereich2 = Allocatememory(500)
Define.l bereich3 = AllocateMemory(700)
Structure MyStruct
b1.bereich1
b2.bereich2
b3.bereich3
EndStructure
; dann was reinschreiben, bzw. an eine
DLL-Funktion übergeben.
PokeL(*MyStruct\b1, wert)
bzw.
DllFunction(*MyStruct\b2,....)
in eine Datei schreiben.
Aber mit nem Array in der Structure könnte es auch gehen.
PB 6.10
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Structure + Memory + WriteData
Code: Alles auswählen
Structure MyStruct
b1.b[200]
b2.b[500]
b3.b[700]
EndStructure
Re: Structure + Memory + WriteData
Danke ts-soft,
werde es mal damit versuchen.
Normalerweise füttere ich eine Fremd-Dll
mit Bereichen (AllocateMemory), die mir
dann diese Bereiche füllt bzw. diese Bereiche
für ihre Zwecke ausliest.
Mal sehen, ob ich ihr das unterjubeln kann.
Übergabe müßte dann so sein :
oder liege ich da falsch ?
werde es mal damit versuchen.
Normalerweise füttere ich eine Fremd-Dll
mit Bereichen (AllocateMemory), die mir
dann diese Bereiche füllt bzw. diese Bereiche
für ihre Zwecke ausliest.
Mal sehen, ob ich ihr das unterjubeln kann.
Übergabe müßte dann so sein :
Code: Alles auswählen
ergebnis = DllFunction(*MyStruct\b1,.....)
PB 6.10
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Structure + Memory + WriteData
Mit Pointern mußte ja den Speicher selbst allokieren, lieber so:
Code: Alles auswählen
Structure MyStruct
b1.b[200]
b2.b[500]
b3.b[700]
EndStructure
Define.MyStruct a
ergebnis = DllFunction(@a\b1,.....)
; oder
ergebnis = DllFunction(@a\b1[0],.....)
Re: Structure + Memory + WriteData
Danke,
muß mich noch durchwursteln.
Habe EnableExplicit an, der meckert
noch rum. (an beiden deiner Varianten).
Aber den Ansatz hab ich ja jetzt.
muß mich noch durchwursteln.
Habe EnableExplicit an, der meckert
noch rum. (an beiden deiner Varianten).
Aber den Ansatz hab ich ja jetzt.
PB 6.10
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Structure + Memory + WriteData
An meinem Code kann das gemeckere nicht liegen. Den Fehler mußte bei Dir suchen

Code: Alles auswählen
EnableExplicit
Structure MyStruct
b1.b[200]
b2.b[500]
b3.b[700]
EndStructure
Define.MyStruct a
a\b3[0] = 'A'
Debug PeekS(@a\b3[0], 1, #PB_Ascii)