Autor Beitrag
Sauger Chris
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 228

Win XP, Linux SuSE 9.2
Delphi 4,Delphi 7 Ent.
BeitragVerfasst: Fr 18.05.07 15:25 
Moin

beschäftige mich gerade mit dem pos , copy , Delete,Insert usw.

unten hab ich mal meinen code gepostet
es tritt folgender fehler auf

(Im Projeckt Project2.exe ist eine Exception der Klasse EstringListError aufgetreten. Meldung:
Listindex überschreitet das maximum(1))

so es liegt wetten an
ausblenden Delphi-Quelltext
1:
checkstring := konf.Strings[i];					



aber wie soll ich sonst jede einzelne zeile checken ?? plz help me thx


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Writeln('()=======() String lösch test ()========()');
Writeln('');
  konf := TStringList.Create;
try
  konf.Sorted := true;
  konf.Duplicates := dupIgnore;
  konf.LoadFromFile('test.txt');                 // strings aus test.txt laden
for i:=0 to konf.Count -1 do                      // alle strings zurch zählen
begin
checkstring := konf.Strings[i];                      //1 zeile dem checkstring zuweisen
position := Pos(':', checkstring);                   // nach dem zeichen suchen :
konf.Text := Copy(checkstring, 1, Position-1);     // alles was nach dem zeichen kommt weg löschen + das zeichen selber
konf.SaveToFile('dddd.txt');
end;
except
  Writeln('Ein Fehler ist aufgetreten');
  konf.Free;
end;




mfg saugi
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 18.05.07 15:30 
Hallo!

Der Fehler liegt wohl an dieser Zeile:
ausblenden Delphi-Quelltext
1:
konf.Text := Copy(checkstring, 1, Position-1);					

Mit dieser Zuweisung hat die StringListe plötzlich nur noch eine Zeile! Beim nächsten Durchlaufe der Schleife wenn du auf die zweite Zeile zugreifen willst knallt es natürlich. ;-)

Besser wäre das wahrscheinlich so:
ausblenden Delphi-Quelltext
1:
konf.Strings[i] := Copy(checkstring, 1, Position-1);					


Außerdem solltest du die StringListe immer freigeben und nicht nur im Falle einer Exception. ;-)

Macht es wirklich sinn in jedem Schleifen-Durchlauf die StringListe zu speichern?
Gruß
Tino
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Fr 18.05.07 15:34 
..und die Zeile

ausblenden Delphi-Quelltext
1:
konf.SaveToFile('dddd.txt');					

würde ich außerhalb der for-Schleife platzieren, außer es hat einen tieferen Sinn für dich, dass sie dort steht.

[edit]..zu spät[/edit]
Sauger Chris Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 228

Win XP, Linux SuSE 9.2
Delphi 4,Delphi 7 Ent.
BeitragVerfasst: Fr 18.05.07 15:41 
ok so geht es thx euch 2 =)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
  konf := TStringList.Create;
try
  //konf.Sorted := true;
  //konf.Duplicates := dupIgnore;
  konf.LoadFromFile('test.txt');
for i:=0 to konf.Count -1 do
begin
checkstring := konf.Strings[i];
position := Pos(':', konf.Strings[i]);
konf.Strings[i] := Copy(checkstring, 1, Position-1);
end;
konf.SaveToFile('dddd.txt');
konf.Free;
except
  Writeln('Ein Fehler ist aufgetreten');
  konf.Free;
end;