AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Suchen eines bestimmten Strings in einer TextFile
Thema durchsuchen
Ansicht
Themen-Optionen

Suchen eines bestimmten Strings in einer TextFile

Ein Thema von Rapthor · begonnen am 17. Sep 2003 · letzter Beitrag vom 18. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#1

Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 15:54
Ich brauch eine Anweisung, die mir die Zeichenkette 'xyz' in einer von mir festgelegten Datei (TextFile) sucht und sie durch eine andere Zeichenkette 'abc' ersetzt. Das alles jedoch ohne die ganze Datei neu schreiben zu müssen, sondern nur dass er mir die eine Zeile ersetzt.

Geht das ?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 15:58
Moin Rapthor,

ja, sollte gehen.
Du könntest die Datei mit einem TFileStream öffnen, dann die Datei durchlesen, bis Du die gewünschte Stelle gefunden hast (Eigenschaft Position merken), und an diese wird dann der Ersatz geschrieben.

Das funktioniert natürlich nur, wenn der gesuchte Text genauso lang ist wie der neue.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#3

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 16:04
Servus Rapthor,
lies mal Zeile für Zeile mittels read(f, Stringvariable) aus der
Datei aus und checke die Stringvariable periodisch mit der Funktion POS
nach Deinem Substring. Sollte POS <> 0 sein, dann änderst Du den
Substring mit den allgemeinen Stringfunktionen Delete, Concat , etc..,
und schreibst ihn direkt wieder in Deine Textfile hinein.
Sieh Dir erst mal die Funktion POS in der Hilfe an, denn damit
ermittelst Du, ob ein Substring (Teilstring) in einem String vorhanden ist.

Gruß
DANNYBOY
  Mit Zitat antworten Zitat
Benutzerbild von Burning_Chrome
Burning_Chrome

Registriert seit: 15. Sep 2003
Ort: Austria
25 Beiträge
 
Delphi 7 Architect
 
#4

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 16:10
Hi!

@rapthor: ist IMHO keine gute idee. wenn waerend dem schreiben was schiefgeht (sprich absturz) ist die datei u.u. weg. am vernuenftigsten und schnellsten waere: datei blockweise (je groesser desto besser) in den speicher, text ersetzen, in eine neue datei schreiben, wenn getan, alte datei loeschen (oder als backup umbenannt stehen lassen) und neue umbenennen.

wie du oben beschrieben hast, gehts wirklich nur wie christian meint, wenn xyz genau gleich lang ist wie abc...

Best_Regards
Burning_Chrome
Ich hab keine Ahnung - aber wenigstens bin ich nicht allein!
  Mit Zitat antworten Zitat
johny

Registriert seit: 12. Aug 2003
Ort: Koblenz
32 Beiträge
 
#5

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 16:30
Wenn es wirklich zeilenweise ist, kannst du mit folgender Prozedur zumindst den String finden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 sl: TStringList;
 zeilennr: integer;
begin
 sl:=TStringList.Create; //Objekt erzeugen
 try
 sl.LoadFromFile(ExtractFilePath(Application.ExeName) + 'File1.txt');
 for zeilennr:=0 to sl.Count-1 do
 begin
  if sl[zeilennr]='MARKERthen
  ShowMessage('MARKER gefunden in Zeile '+IntToStr(zeilennr+1)); //Meldung ausgeben
 end;
 finally
  sl.free; //Objekt wieder freigeben
 end;
end;
In diesem Beispiel würde er nach 'MARKER' suchen. Gut, die Meldung wird hier nur angezeigt, um zu sehen, dass es funktioniert. Die fällt in deinem Programm natürlich weg.

So, dann muss die Zeile eben noch gelöscht und neu geschrieben werden. Da kann ich dir spontan leider kein Beispiel geben.
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#6

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 16:34
Hmm das ist ja doof.
Also eigentlich such ich ja nen String meinetwegen 'Name=' und ich weiß dass hinter dem '=' ein paar Zeichen stehen, die ich aber dynamisch (d.h. egal welche Anzahl Zeichen) durch einen neuen String ersetzen will.
Die zu bearbeitende Datei könnte wie folgt aussehen:

Ort=abcdefg
Straße=fghij 21
Name=blablubb
Vorname=bubabu

Und der User soll jetzt seinen Namen eingeben, den ich halt für "blablubb" einsetze. Der kann natürlich länger oder kürzer sein.
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#7

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 17:46
Hab johny's Sache folgendermaßen umgeschrieben:

Delphi-Quellcode:
var
  sl: TStringList;
  z : integer;
 
......

procedure TForm6.Button1Click(Sender: TObject);
begin

  sl:=TStringList.Create;
  try
  sl.LoadFromFile('Datei.ini');
  for z := 0 to sl.Count -1 do
  begin
    if sl[z]='testthen
    ShowMessage('test gefunden in Zeile ' + IntToStr(z+1));
    end;
    finally
    sl.free;
  end;

end;
Er sucht aber nur genau 'test' und nicht etwa 'test=shfghdjs'. Sondern eben nur, wenn test alleine in einer eigenen Zeile steht.
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 17:50
Weiss auch nicht wie das jetzt geht aber dazu brauchst du eigentlich Wildcards. Sowas wie * in Suchen usw. Vielleicht kann man das auch anders machen aber ich denke das ist ein Läsungsansatz.

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#9

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 18:05
Probiers mal mit s1.Values['name'] := 'neuer Wert'; Das dürfte aber nur gehen, wenn es nur eine Zeile mit 'name=...' gibt.
Dazu gibt's noch die Methode TStringList.IndexOfName, die Dir die Zeilennummer zurückgibt
Viel Erfolg
Urs
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#10

Re: Suchen eines bestimmten Strings in einer TextFile

  Alt 17. Sep 2003, 18:37
Wie jetzt? Wohin denn GENAU mit der Zeile?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:46 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