![]() |
Delphi-Version: 7
Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Hallo!
Ich suche einen Weg Text dateien mit ca. 160.000 Zeilen und mit unbekannten Zeichen wie diesen: ![]() umzugehen. Ich möchte in der Datei nach einem String suchen (Ganz normale Buchstaben) und dann einige Linien unter dem String etwas zu ersetzen. Weiß jemand wie das geht? Wenn ich in ein Memo die Datei reinlade dann wird nur die erste linie "beladen" |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Ist nur Text in der Datei?
Bei Antreffen des Zeichens #0 hört das Memo mit dem Laden auf. (Probleme mit den C-Strings, auch 0-terminierte Strings genannt :roll: und in Delphi als PChar anzutreffen ) TStringList, TFileStream, TTextStream uvm. [edit] Pech gehabt ... #0 (NUL) Dann fallen TStringList und Memo definitiv aus. PS: Man darf Bilder auch direkt hier anhängen. :zwinker: |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Werd ich mal probieren, danke!
|
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Zitat:
Allerdings gehe ich auch davon aus, dass die Programmierung eines solchen den TE noch überfordern würde :) |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
@TRUCKERmas
Also ich weiß nicht ob es evtl. mit Tricks gehen würde, aber normalerweise kann man es so (wie deine Grafik) es mit dem Memo nicht machen. TRichEdit bietet da mehr Möglichkeiten. Die Datei darf nicht direkt in die Komponente geladen werden, Grund siehe vorherige Beiträge, sondern müsste beim Laden konvertiert werden. Nullen und andere Sonderzeichen müßten durch dies Kürzel (Steuerzeichen) ersetzt werden. Aber ich bin mal ehrlich, das Ganze würde einen gewissen Programmieraufwand bedeuten. Machen könnte man es so wie es früher der Windows Write gemachte hat (das war ein einfaches Textverarbeitungsprogramm). Es las alles zwar ein, aber alle nicht darstellbaren Zeichen wurden durch ein Rechteck ersetzt. Im Hintergrund existierte aber das Zeichen weiter, so dass nach dem Speichern alles wieder beim alten war. Damit konnte man also sogar Programme laden, Manipulieren und wieder speichern. Das wäre schon einfacher in der Darstellung, aber immer noch etwas Programmieraufwand. Wenn es nur um Darstellung, aber nicht um Änderung geht, ginge in einem gewissen Rahmen TListBox. Da kann man auf DrawItem zugreifen. Das bietet Möglichkeiten. Aber wie auch immer, mit den Standardkomponente ist die Darstellung oben kaum möglich. Evtl. eine andere Komponente? |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Also für mich ist das keine "grosse und schwere Txt Datei" sondern eine binäre Datei.
Und ich würde wetten, dass die Datei mit den Zeichen MZ beginnt und als Endung .exe oder .dll hat. Vielleicht ist es auch eine Datei aus einem Spiel, aber egal, für binäre Dateien gelten ganz bestimmte Regeln: 1.) es gibt keine Zeilen 2.) beim Ändern von Inhalten darf die Dateilänge nicht verändert werden Wenn es also um das Patchen von binären Dateien geht sollte man daran denken, dass andere Leute das Problem schon längst gelöst haben. z.B. ![]() Wenn man es unbedingt selber programmieren will, dann nimmt man einen TFileStream und liest die Daten in Blöcken von 64kB ein. Sollte das gesuchte Muster zufällig auf einer Blockgrenze liegen, wird es etwas knifflig, aber das sollte sich lösen lassen. |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Zitat:
auch keine Methode wie ich ihm sage, dass er ab Zeile 120 reinladen soll. Leider funktioniert die Methode wohl nicht. |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Zitat:
Nur weil da ein paar darstellbare Zeichen zu erkennen sind, handelt es sich noch längst nicht um eine Textdatei. (und 4,6 Mb waren zu DOS-Zeiten vllt. groß und schwer) Und statt eine fertige Komponente zu nutzen, ist selber programmieren vllt. eine Alternative. Für die Datenanalyse würde sich ein HexEditor anbieten. Da sieht man alle in einer Datei enthaltenen Werte. Gruß K-H |
AW: Methode um große und schwere Txt Dateien zu lesen und bearbeiten
Und je nach Format der Datei kann man da nicht einfach mal so ein paar Zeichen ersetzen, zumindest nicht bei unterschiedlichen Stringlängen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz