![]() |
Zeilen ohne gesuchten String aus Datei entfernen
Hi,
ich habe eine rießige Datei, rand-voll mit allen möglichen Informationen, von der ich nur Zeilen, in der ein bestimmter String enthalten ist, in eine neue Datei kopiere... Bsp: Originaldatei:
Delphi-Quellcode:
Zu suchender String: (Groß- und Kleinschreibung soll beachtet werden!)
Name: Mustermann
Vorname: Max Name: Irgendwer Vorname: Inge Name: Y Vorname: X ...
Delphi-Quellcode:
Ausgabedatei:
'Name:'
Delphi-Quellcode:
Wie kann ich das anstellen?
Name: Mustermann
Name: Irgendwer Name: Y ...
Delphi-Quellcode:
procedure PurgeFile(MyFile: String; PurgeID: String); // MyFile = Originaldatei; PurgeID = Zu suchender String
var file1, file2: textfile; s: String; being AssignFile(file1, MyFile); AssignFile(file2, 'Purged.txt'); Reset(file1); Rewrite(file2); while not EoF(file1) do begin ReadLn(file1, s); if s ?????? then // Prüfen ob "PurgeID" in "s" vorhanden ist WriteLn(file2, s); end; CloseFile(file1); CloseFile(file2); end; |
Re: Zeilen ohne gesuchten String aus Datei entfernen
Delphi-Quellcode:
if pos(PurgeID,s) > 0 then
[edit] lowerCase wieder entfernt, Begründung siehe unten: [/edit] Grüße Klaus |
Re: Zeilen ohne gesuchten String aus Datei entfernen
Achtung: In der Delphi-Hilfe steht:
Zitat:
|
Re: Zeilen ohne gesuchten String aus Datei entfernen
Vielen Dank für die schnelle Antwort Klaus...
Für mich funzt's jetzt! :thumb: Zitat:
|
Re: Zeilen ohne gesuchten String aus Datei entfernen
Entweder CompareText verwenden oder AnsilowerCase und AnsiUpperCase verwenden.
Wenn du die Zeile also komplett in großbuchstaben wandelst kannst du dann prüfen ob der Suchbegriff (welcher auch komplett in großbuchstaben gewandelt wird) drin enthalten ist. |
Re: Zeilen ohne gesuchten String aus Datei entfernen
Zitat:
Grüße Klaus |
Re: Zeilen ohne gesuchten String aus Datei entfernen
Wenn ich das richtig verstehe, ist da aber kein Unterschied.
Ob mit oder ohne Lowercase, die Treffer wären doch trotzdem gleich. Wenn aus NAme und naME jeweils name wird, dann wird doch die Groß/Kleinschreibung in der Datei nicht berücksichtigt. Das gleiche macht doch Pos von sich aus dann schon ... (?) MFG Lorenz |
Re: Zeilen ohne gesuchten String aus Datei entfernen
Hallo,
wer Zugriff auf die Funktion AnsiContainsText() hat, der kann auch UTF8-Dateien verarbeiten:
Delphi-Quellcode:
Aber eigentlich ist das eine Aufgabe, die man ohne Gesichtsverlust auf der Shell-Ebene erledigen kann:
begin
// ... while not Eof do begin ReadLn(line); if AnsiContainsText(line, PurgeId) then WriteLn(line); end; // ... end;
Code:
Grüße vom marabu
grep 123 input.txt >output.txt
|
Re: Zeilen ohne gesuchten String aus Datei entfernen
Zitat:
Ein kleines Beispiel zum mitmachen...
Delphi-Quellcode:
Und? Wie wird die Antwort wohl lauten?
Procedure TForm1.Button1Click(Sender: TObject);
Var lstData: TStringlist; iPos: Integer; Begin lstData := TStringlist.Create; Try lstData.Add('Hallo'); iPos := Pos('hallo', lstData.Text); If iPos > 0 Then ShowMessage(IntToStr(iPos)) Else ShowMessage('Pech gehabt'); Finally FreeAndNil(lstData); End; End; Edit: In der Hilfe des BDS4.0 ist dieser Fehler übrigens korrigiert worden: Zitat:
|
Re: Zeilen ohne gesuchten String aus Datei entfernen
Zitat:
.. hast nich ganz durcheinander gebracht ... Nun in meiner Hilfe steht: Zitat:
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 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 by Thomas Breitkreuz