Beste Weg zum Lesen und schreiben einer Textdatei

Ich bin mit der neuesten version der Lazarus-IDE und ich haben eine Memo1 auf meine TForm1. Ich habe zum laden einer text-Datei in Memo1 und Bearbeiten Sie anschließend jede Zeile des Memo (ich benutze Memo1.Lines.Strings[i] := ...). Am Ende muss ich speichern Sie die bearbeitete memo zu einem bestimmten Pfad.

Frage: ich bin auf der Suche nach der schnellere Weg zwischen:

  1. Laden Sie den gesamten text in der memo, deren Inhalt Bearbeiten und speichern in eine neue Datei (load-all -> Bearbeiten -> write all)
  2. Tun while Schleife (bis zum Ende meiner *.txt Datei) liest die Datei zeilenweise Bearbeiten Sie den Inhalt und speichern Sie es in die neue Datei. (load line -> Bearbeiten -> schreib - | laden -> Bearbeiten -> schreiben | laden-Zeile -> Bearbeiten -> schreiben | ...)

Ich bin ziemlich neu in Delphi entwickelt, und ich habe auch gelesen, einige Seiten über TStringLists. Meine text-Datei ist eine Menge von Linien (Er hätte 5000+ Zeilen), und ich will nicht, dass mein Programm verliert Leistung.

Jede Anregung? Sollte ich TStringList oder eine der beiden Methoden, die ich aufgelistet vor?

  • Bearbeiten Sie (eigentlich eingeben, um den text zu ändern) in dem memo? Wenn dem so ist, laden, Bearbeiten und speichern. Wenn nicht, verwenden Sie einfach ein TStringList statt, da brauchen Sie nicht den overhead einer GUI-Steuerung.
  • Das Programm hat zum Bearbeiten jeder Zeile hinzufügen einige zahlen am Ende oder am Anfang der Zeile. Nicht der Benutzer muss nichts eingeben.
  • Ist es ein wenig albern zu laden, einige Daten in der GUI kontrollieren und tun sich nichts in der GUI Zweck? Was denkst du?
  • Ich mache das, weil ich habe, um zu sehen, was macht das Programm in der Schleife. Ich weiß, was du meinst, aber das ist nur ein "feature" ich Teste für mein Programm. Vielen Dank für die Ratschläge sowieso.
  • Ich glaube nicht, was die Beurteilung von tausenden von Textzeilen ist wirklich eine gute Möglichkeit zu testen, einen bestimmten Vorgang. Die echte Beratung: stellen Sie sicher, was Sie haben filesize * 2 bytes freier Speicher zu nutzen TStrings verwenden, sonst vertauschen, wird es sehr langsamer als line-by-line.
  • definitiv nicht doppelt!
  • Einfügen von zusätzlichen Symbolen in der Mitte der Saiten Kräfte kopieren, den rest des Textes weiter und weiter in den Speicher immer wieder und die Skalierung als N^2. Schneller code in der Füllung frische neue TStringBuilder (mit memory pre-allocation) oder ein Array Von String aus der Datenquelle. Aber in dieser situation HDD Lesen-schreiben wäre mehr als die Begrenzung RAM Lesen-schreiben-trotzdem.
  • Berücksichtigen Sie auch memo1.Linien.beginupdate, um es schneller zu machen

Schreibe einen Kommentar