Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#22

AW: Textdatei laden - Integerüberlauf

  Alt 15. Jul 2020, 23:23
Der 64 Bit-Debugger wird, wie der externe RemoteDebugger, über eine lokale TCP/IP-Verbindung angesprochen ... schau mal ob rmtdbg270.exe lokal freigegeben ist.


So, ansonsten du hast Pech.
Im SaveToFile wird erst alles in einen String kopiert
und strings können maximal 2 GB groß werden.

Bei DynArrays ist Length als NativeInt deklariert, aber bei den LongStrings (z.B. String/UnicodeString) nur als Integer.

TStrings.SaveToStream: erst über TStrings.GetTextStr und dann durch TEncoding.GetBytes in ein Byte-Array, welcher in den Stream kopiert wird
und der String ist hier die Limitierung.
Beim LoadFromFile andersrum.


Du darfst gern eine TStringList benutzen, aber nur für Dateien unter 1 GB,
oder du implementierts die Lade-/Speichernfunktion selbst.

Oder machst es eben "richtig".
Zitat:
Das "richtige" Verfahren ist aber nicht ALLEs zu laden, sondern solche großen Dateien nur stückchenweise in mehreren Blöcke á einigen KB/MB aufgeteilt zu laden und nacheinander zu behandeln.
Sieh dir HxD an, da hast ein Beispiel dass man auch kleine Terrabytedateien laden kann.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Jul 2020 um 23:32 Uhr)
  Mit Zitat antworten Zitat