Bytes zusammenfassen

Anfängerfragen zum Programmieren mit PureBasic.
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Bytes zusammenfassen

Beitrag 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?
Diese Welt ist krank und ich bin es auch...
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Beitrag von Beforegod »

hui danke für die schnelle antwort ;) Funktioniert klasse ;)
aber für was ist das &$ff
Diese Welt ist krank und ich bin es auch...
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag 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
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
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

Beitrag 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:
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.
Bild
Beforegod
Beiträge: 34
Registriert: 21.09.2005 12:12

Beitrag 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 ;)
Diese Welt ist krank und ich bin es auch...
Antworten