Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Textdatei laden - Integerüberlauf

  Alt 15. Jul 2020, 22: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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