Seite 1 von 1

Bytes zusammenfassen

Verfasst: 15.01.2006 15:43
von Beforegod
Moin,

ich habe folgendes "Logik"problem:

Ich lese aus einer Datei die BYtes einzeln aus und schreibe diese direkt in eine Datei. Nun möchte ich vor dem schreiben, die BYtes in einer Variablen zwischenspeichern und diese dann gesammelt auf die Platte schreiben.

peekb -> zwischenspeicher -> datei schreiben

Da die Daten bis zu 32 MB gehen, frage ich mich nun wie ich die Lösung einfach handhaben kann. Mit arrays werde ich wohl kaum weiterkommen oder?

Verfasst: 15.01.2006 15:47
von MVXA

Code: Alles auswählen

lBuffer = AllocateMemory(32*1024*1024) ; 32 MB Speicher reserviert
PokeB(lBuffer, ReadByte()&$FF) ; Byte von Datei einlesen und in Speicher schreiben
Und mit WriteData kannst du dann den Speicherbereich in die
Datei schreiben. Allerdings würde ich dir empfehlen die Datei
mit dem Befehl ReadData in einem Ruck einzulesen.

Verfasst: 15.01.2006 15:54
von Beforegod
hui danke für die schnelle antwort ;) Funktioniert klasse ;)
aber für was ist das &$ff

Verfasst: 15.01.2006 15:55
von nco2k
@Beforegod
mit ReadDate wärst du schneller dran. schau dir mal wie ich das hier eingesetzt habe: http://forums.purebasic.com/german/viewtopic.php?t=5249 das sollte dir weiterhelfen.

du darfst nur nicht vergessen, dass damit die datei in den speicher geladen wird, was heissen würde, wenn du eine 300mb datei auf einem system mit nur 128mb ram laden willst, es zu problemen kommt. :D

c ya,
nco2k

Verfasst: 15.01.2006 15:57
von ts-soft
Warum liest Du die Bytest einzeln???
Also einfach eine Speicherbereich in der größte der Datei reservieren

Code: Alles auswählen

*Mem = AllocateMemory(Lof())
Deine Datei da reinlesen, anschließend kannste durch den Speicher Byteweise iterieren

Code: Alles auswählen

PeekB(*Mem)
PeekB(*Mem +1)
usw.
Ich hoffe, das war es in etwa, was Du Wissen möchtest?

/Nachtrag
Man bin ich langsam heute :wink:

Verfasst: 15.01.2006 16:15
von Beforegod
danke für die zahlreichen tipps..
werde mal einige durchprobieren da ich dies noch auf anderen ebenen vorhabe (nicht nur dateien auslesen). Mehr kann ich noch nicht verraten ;)