Dann brauchste erst recht kein Copymemory. Verstehe immer noch nicht
was Du vorhast.
Du kannst einen Speicher für die 3 DLL-Funktionen reservieren, passend
gross natürlich. und den Funktionen dann diesen Pointer + Offset zuweisen,
so schreibt die DLL alles in einem zusammenhängenden Speicher.
Hauptsache da wird nichts reallokiert.
Vielleicht erklärste einfach mal was Du warum machen möchtest. Also was
möchtest Du bezwecken. Nicht wie mache ich das CopyMemory rightig,
Wahrscheinlich liegt eher ein Denkfehler vor. Ich sehe keinen Vorteil dabei
die Speicherbereiche zusammenzuführen, eher Gefahren, falls die DLL die
grösse doch manipuliert
Ein bißchen Pseudo-Code ohne das man die DLL benötigt wäre auch hilfreich.
Speicherbereich
- 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Hm, wie soll ich es noch erklären. Ich hätte dann nur noch
eine einzige Datei und nicht noch eine Datei, in der die Spalten-
definitionen stehen. Ich will sogar noch einen Schritt weiter
gehen und mit Get/SetColumnUpdate (768 Byte großer Block)
die Einstellungen wie Breite der Spalten usw. mitspeichern.
Stell dirs mal vor, wie bei einer .zip - Datei. Da packst du ja
auch nicht jede einzelne Datei in einer separaten .zip, sondern
machst eine einzige mit allen gepackten Dateien darin.
eine einzige Datei und nicht noch eine Datei, in der die Spalten-
definitionen stehen. Ich will sogar noch einen Schritt weiter
gehen und mit Get/SetColumnUpdate (768 Byte großer Block)
die Einstellungen wie Breite der Spalten usw. mitspeichern.
Stell dirs mal vor, wie bei einer .zip - Datei. Da packst du ja
auch nicht jede einzelne Datei in einer separaten .zip, sondern
machst eine einzige mit allen gepackten Dateien darin.
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
Wenn ich es richtig verstanden habe, solltest Du einfach die File-Funktionen
von PB verwenden, Geschwindigkeitsunterschiede wirds da seit PB4 nicht
mehr geben.
Schon haste alle 3 Speicherblöcke hintereinander in einer Datei. Um die
einzeln wieder einzulesen, brauchste natürlich die jeweilige länge.
von PB verwenden, Geschwindigkeitsunterschiede wirds da seit PB4 nicht
mehr geben.
Code: Alles auswählen
If CreateFile(0, "bla.dat"
WriteData(0, Buffer1, lengthBuffer1)
WriteData(0, Buffer2, lengthBuffer2)
WriteData(0, Buffer3, lengthBuffer3)
CloseFile(0)
EndIf
einzeln wieder einzulesen, brauchste natürlich die jeweilige länge.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Ja, im Prinzip hast du schon recht. WriteFileQuick() und
ReadFileQuick() aus der DLL machen auch nix anderes.
Von der Geschwindigkeit wirds egal sein, da die DLL in
MASM32 erstellt wurde.
Da die Speicherbereiche aber in der Größe variabel sein können,
liefert mir die DLL-Funktion CsvToHeader() daher einen Offset,
wo die eigentlichen Daten beginnen.
Das Problem hat sich ja gelöst. Trotzdem danke für die Antworten.
ReadFileQuick() aus der DLL machen auch nix anderes.
Von der Geschwindigkeit wirds egal sein, da die DLL in
MASM32 erstellt wurde.
Da die Speicherbereiche aber in der Größe variabel sein können,
liefert mir die DLL-Funktion CsvToHeader() daher einen Offset,
wo die eigentlichen Daten beginnen.
Das Problem hat sich ja gelöst. Trotzdem danke für die Antworten.
PB 6.10