AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In Textdatei suchen und Zeile einfügen

Ein Thema von Spurius · begonnen am 18. Jan 2006 · letzter Beitrag vom 18. Jan 2006
Antwort Antwort
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#1

In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 17:51
Hallo,
wie kann ich in einer Textdatei ein Wort suchen und dann danach eine neue Zeile einfügen?
Gruß
Martin
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 17:56
Du kannst so an einer bestimmten Position Text in ein Memo einfügen :

    Insert(SelectedText, MemoText, Select + 1); Das ist nur ein Beispiel. SelectedText, MemoText und Select sind nur Variablen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#3

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 18:05
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?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 18:17
Die Position anhand einer Zahl. Diese Zahl musst Du für die Variable Select einsetzen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#5

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:04
Hallo,
habe jetzt versucht das so zu lösen:
Delphi-Quellcode:
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;;
Leider wird in der Datei nichts sichtbar verändert
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:28
Mit dieser Funktion suchst Du Dein Wort :

Delphi-Quellcode:
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; //
Diese Funktion gibt Dir die Position zurück. Diese Funktion habe ich von der Seite SwissDelphiCenter.

Nun kannste das folgendermaßen machen :
Delphi-Quellcode:
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;
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.
So müsste es klappen. Habe es nicht ausprobiert.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#7

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:33
Hallo,
und wie sieht es mit meinem Code aus? Der müsste doch eigentlich auch funktionieren...
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:37
Zitat von Spurius:
Hallo,
habe jetzt versucht das so zu lösen:
Delphi-Quellcode:
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;;
Leider wird in der Datei nichts sichtbar verändert
die Zeile

for i := 0 to i - 1 do begin muss for j := 0 to i - 1 do begin
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#9

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:49
Hi,
habs jetzt folgendermaßen gelöst:
Delphi-Quellcode:
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;
Trotzdem danke für die Hilfe
Gruß
Martin
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: In Textdatei suchen und Zeile einfügen

  Alt 18. Jan 2006, 19:59
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:

Memo.Text := StringReplace(Memo.Text, Edit.Text, Edit.Text + sLineBreak, [rfReplaceAll]); 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.

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz