Entwickler-Ecke

Dateizugriff - Zeile aus Txt Löschen


Shoppix - Di 22.03.05 01:07
Titel: Zeile aus Txt Löschen
Hallo,

ich hoff ihr könnt mir helfen, ich habe folgendes problem:

ich will in einer Txt-Datei eine Zeile suchen zB suche Nach 'abc' wenn er es findet soll er die Zeile aus der Text-Datei löschen.

Also: TxtDatei vorher:

aaa
abb
abc
abb
aaa

txtdatei nachher:

aaa
abb
abb
aaa

ohne die lehrzeil! ich bin einfach zublöd sitze schon seit 3 tagen dran und habe alle foren durchgestöber... bidde ihr seit meine letzte hoffnung

thx
shoppix


delfiphan - Di 22.03.05 01:15


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Var
 Liste : TStringList;
 Index : Integer;
begin
 Liste := TStringList.Create;
 try
  Liste.LoadFromFile(Filename);
  Index := Liste.IndexOf('abc');
  if Index >= 0 then
  begin
   Liste.Delete(Index);
   Liste.SaveToFile(Filename);
  end else
   ShowMessage('Nicht gefunden');
 finally
  Liste.Free;
 end;
end;


retnyg - Di 22.03.05 01:23

mist...zu langsam ;) aber ein with wäre noch schöner gewesen


delfiphan - Di 22.03.05 01:34

Stimmt, ist aber klarer so... Vor allem für Anfänger. Die Anzahl Zeilen wär ja gleich, bis auf die Variablendeklaration ;)


retnyg - Di 22.03.05 01:37

die anzahl der zeilen schon, aber nicht die performance...

edit: siehe http://mh-nexus.de/optimizingger.htm


delfiphan - Di 22.03.05 01:47

Gut, dann eben so :D
Da du angedeutet hast, dass ein String mehrfach vorkommen kann, hab ich das jetzt auch noch korrigiert.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Var
 Index : Integer;
begin
 with TStringList.Create do
 try
  LoadFromFile(Filename);
  repeat
   Index := IndexOf('abc');
   if Index >= 0 then
    Delete(Index);
  until Index < 0;
  SaveToFile(Filename);
 finally
  Free;
 end;
end;


mael - Di 22.03.05 15:09

user profile iconretnyg hat folgendes geschrieben:
die anzahl der zeilen schon, aber nicht die performance...

edit: siehe http://mh-nexus.de/optimizingger.htm

Ist in diesem Fall aber nicht schlimm, da es nicht in einer Schleife steht.
Ich denke Optimierung sollte nur dann angewendet werden, wenn es spürbare Vorteile bringt, sonst ist Wartbarkeit wichtiger.

P.S.: Meine Optimierungsseite ist nicht fertig und auch nicht wirklich aktuell, es stimmt zwar was draufsteht, aber es fehlt doch eine Menge.