Einzelnen Beitrag anzeigen

freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
272 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Memo1.Text.Length erzeugt "Integer Overflow"

  Alt 19. Mai 2017, 09:00
Liebe DP-Gurus (das ist absolut positiv gemeint!!!),

das war ja klar das die übliche Frage "ist es überhaupt sinnvoll..." aufkommt... Dann erklär ich das mal:

Ja, ist es, denn es handelt sich bei dem Programm um einen "Editor", dessen Spezialgebiet die Analyse, Filterung und Umstrukturierung von Textdatei-basierten Daten ist. Es ist nicht "just another Quelltexteditor"...

Er wird ständig unseren Bedürfnissen angepasst und ist ein unverzichtbares Tool geworden, wenn man "mal schnell was in den Daten nachsehen" oder Dateiformate "umbasteln" muss.

Aufgrund der Historie de Programms und wegen der Performance muss dabei alles im Speicher ablaufen.

Da ich vor einer Schulung Beispieldateien zusammen suchen wollte, die z.B. demonstrieren, welch große Dateien man damit bearbeiten kann, bin ich über das Length-Problem gestolpert.

Es wird dabei übrigens String.Length (ein String-Helper) benutzt. Auch die Funktion Length() packt's ab einer bestimmten Größe nicht mehr, obwohl der String die Daten aufnehmen kann - es waren Übrigens rund 1,3 G Zeichen.

Der Vorschlag, die Länge selbst in einer Loop über die Zeilen zu bestimmen, erschien mir zunächst performance-technisch völlig ungeeignet, da bei jeder eingabe eines Zeichen im Editor diese Zahl neu angezeigt - und damit auch berechnet werden muss.

ABER: Ich hab's trotzdem ausprobiert und es dauert auch bei 3 Mio Zeilen nur den Bruchteil einer Sekunde!

Damit ist also mein Problem gelöst.

Vielen Dank allen!

Gruß

Freejay
[Delphi 11.3.1 Enterprise; Win10/11; MySQL; VCL]
  Mit Zitat antworten Zitat