![]() |
In Textdatei suchen und Zeile einfügen
Hallo,
wie kann ich in einer Textdatei ein Wort suchen und dann danach eine neue Zeile einfügen? Gruß Martin |
Re: In Textdatei suchen und Zeile einfügen
Du kannst so an einer bestimmten Position Text in ein Memo einfügen :
Delphi-Quellcode:
Das ist nur ein Beispiel. SelectedText, MemoText und Select sind nur Variablen.
Insert(SelectedText, MemoText, Select + 1);
|
Re: In Textdatei suchen und Zeile einfügen
Hallo,
mit pos müsste ich doch Worte in einer Textdatei finden oder? Ich verstehe nur nicht genau, was mir pos eigentlich zurückgibt, ausser das es vom Typ Interger ist. Und wenn das klappt, Zeilenumburch reinschreiben und man hat die neue Zeile oder? |
Re: In Textdatei suchen und Zeile einfügen
Die Position anhand einer Zahl. Diese Zahl musst Du für die Variable Select einsetzen.
|
Re: In Textdatei suchen und Zeile einfügen
Hallo,
habe jetzt versucht das so zu lösen:
Delphi-Quellcode:
Leider wird in der Datei nichts sichtbar verändert :?:
procedure TForm1.Button1Click(Sender: TObject);
var i,j: Integer; s:String; bla:textfile; begin memo1.loadfromfile(fileb.filename); i := memo1.lines.count; AssignFile(bla,fileb.filename); Reset(bla); for i := 0 to i - 1 do begin readln(bla,s); if (pos('Z',s)>0) then begin write(bla,#10); writeln(bla, 'M0'); end; end; end;; |
Re: In Textdatei suchen und Zeile einfügen
Mit dieser Funktion suchst Du Dein Wort :
Delphi-Quellcode:
Diese Funktion gibt Dir die Position zurück. Diese Funktion habe ich von der Seite
function PosN(Substring, Mainstring: string; n: Integer): Integer; // Funktion zum Suchen ob ein Zeichen im String enthalten ist
begin // if Pos(substring, mainstring) = 0 then begin // posn := 0; // Exit; // end else begin // if n = 1 then posn := Pos(substring, mainstring) // else begin // posn := Pos(substring, mainstring) + posn(substring, Copy(mainstring, // (Pos(substring, mainstring) + 1), Length(mainstring)), n - 1); // end; // end; // end; // ![]() Nun kannste das folgendermaßen machen :
Delphi-Quellcode:
Du brauchst dazu einen Button, ein Edit-Feld und ein Memo-Feld. Dann sollte beim anklicken das Wort aus dem Edit-Feld gesucht werden und an dieser Position der Text aus der Variable 'Text' eingefügt werden.
procedure TForm1.Button1Click(Sender: TObject);
var MemoText : String; Selected : Integer; Text : String; begin MemoText := Memo1.Text; Selected := posn(Edit1.Text, MemoText, 1); Text := 'Das ist ein Test'; Insert(Text, MemoText, Selected + 1); Memo1.Text := MemoText; end; So müsste es klappen. Habe es nicht ausprobiert. |
Re: In Textdatei suchen und Zeile einfügen
Hallo,
und wie sieht es mit meinem Code aus? Der müsste doch eigentlich auch funktionieren... |
Re: In Textdatei suchen und Zeile einfügen
Zitat:
for i := 0 to i - 1 do begin muss for j := 0 to i - 1 do begin |
Re: In Textdatei suchen und Zeile einfügen
Hi,
habs jetzt folgendermaßen gelöst:
Delphi-Quellcode:
Trotzdem danke für die Hilfe
procedure TForm1.Button1Click(Sender: TObject);
var i,j: Integer; s:String; bla:textfile; list1:TStringlist; begin list1 := TStringlist.Create; list1.LoadFromFile(fileb.FileName); i := list1.Count; AssignFile(bla,fileb.filename); Reset(bla); for i := 0 to i - 1 do begin readln(bla,s); memo1.Lines.Add(s); if (pos('z',s)>0) then begin memo1.Lines.Add('M0'); end; end; memo1.Lines.SaveToFile(fileb.FileName +'-conv.txt'); end; Gruß Martin |
Re: In Textdatei suchen und Zeile einfügen
Hallo Martin,
wolltest du nicht nach dem gefundenen Wort einen Zeilenumbruch einfügen? Wenn du den Text mit Memo.LoadFromFile() einliest und in Edit.Text das Literal einträgst, hinter dem umgebrochen werden soll, dann funktioniert das hier ganz gut:
Delphi-Quellcode:
Dein eigener Code braucht keinen Zeilenindex, wenn du nach dem Laden der Datei in das Memo eh wieder mit der Textdatei arbeiten willst. ReadLn wird besser durch Eof terminiert und Write verschiebt den Positionszeiger für den nächsten Eingabe- bzw. Ausgabe-Befehl. Da musst du schon eine getrennte Ausgabedatei verwenden.
Memo.Text := StringReplace(Memo.Text, Edit.Text, Edit.Text + sLineBreak, [rfReplaceAll]);
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 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