String mit 123188411 Zeichen bearbeiten

10/20/2011 15:18 Lawliet#1
Hey, ich lese ein 120MB großes File binär ein.
Code:
$RezHandle = FileOpen("C:\Nexon\Combat Arms EU\Game\GUNS_M_PV_AR.REZ", 16)
$REZ = FileRead($RezHandle)
Das geht noch, doch sobald ich jetzt versuche mit dem String irgendwas zu machen* kommt:
Code:
Error, allocating memory
Hat jemand eine Idee wie ich das machen könnte?

Machen = _StringBetween, StringMid, StringTrimLeft/Right, StringLen etc.
10/20/2011 17:28 TimBlo88#2
unschön [Only registered and activated users can see links. Click Here To Register...]

kick alle UDFs ausm programm raus, es geht ohne.
ausser selbst geschriebene UDFs, davon brauchst du soviele wie möglich [Only registered and activated users can see links. Click Here To Register...]

-> die ganze datei befindet sich in diesem binärstring.
niemals den String in ein Array teilen.
Quote:
Originally Posted by AutoIt.chm
Die Gesamtanzahl der Einträge kann dabei nicht größer sein als 2^24 (16 777 216).
Damit kannste z.B. jede mögliche farbe für dein bildschirm 1mal speichern.
auf deinem PC sind das 16MB die du als einzelne bytes in ein array laden kannst. danach is schluss mit lustig.

bei einigen funktionen kanns also an einer ähnlichen beschränkung liegen.
Die Funktionen StringLeft, StringMid, StringRight, StringTrimLeft, StringTrimRight, StringLen sowie StringReplace genügen um mit ner datei alles mögliche zu machen.
Alles andere is eh nur CPU-Fresserei o.ä. da autoit nich sehr effizient binärdaten verarbeitet.

beachten muss man dabei noch, dass das erste byte in autoit string die position 0 und 1 hat und nich etwa 1 und 2...
10/20/2011 19:18 Lawliet#3
Quote:
Originally Posted by TimBli
bei einigen funktionen kanns also an einer ähnlichen beschränkung liegen.
Die Funktionen StringLeft, StringMid, StringRight, StringTrimLeft, StringTrimRight, StringLen sowie StringReplace genügen um mit ner datei alles mögliche zu machen.
Alles andere is eh nur CPU-Fresserei o.ä. da autoit nich sehr effizient binärdaten verarbeitet.

beachten muss man dabei noch, dass das erste byte in autoit string die position 0 und 1 hat und nich etwa 1 und 2...
StringTrim etc. geht auch nicht.
Ich kann nichtmal ein ein Zeichen trimmen.
10/20/2011 19:21 TimBlo88#4
a) die ersten zeichen geben das hex-präfix an.

b) schick mal die komplette debug anzeige aus scite