Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit StringList und for schleifen (https://www.delphipraxis.net/48739-probleme-mit-stringlist-und-schleifen.html)

agm65 29. Jun 2005 20:19


Probleme mit StringList und for schleifen
 
guten abend leute...
hab mal wieder ne nachschicht vor mir, hoffentlich sind heute nacht genug online ;) !
nun zu meinem problem:
also ich habe 2 stringlist global definiert

Delphi-Quellcode:
var
sl: TStringList;
sl2: TStringList;


tform1.formcreate;
begin
sl:=TStringList.Create;
sl2:=TStringList.Create;

//file 1 von 49
sl.Add(ExtractFilePath(ParamStr(0)) + 'dir\file1.txt');
sl2.Add('ini.ReadString(''File1'', ''KEY'','''')');

//file 2 von 49
sl.Add(ExtractFilePath(ParamStr(0)) + 'dir\file2.txt');
sl2.Add('ini.ReadString(''File1'', ''KEY'','''')');

end;

tform.button1click;
var
i:integer;
begin
 try
  for i := 0  to sl.count -1 do
     begin
     sl.LoadFromFile(sl.Strings[i]));
     edit1.text := sl.count;
     sl.clear;
     end;
end;
ich bekomme ne fehlermeldung, dass ich nen maximum wert überschritten habe ?
aber wieso ? habe schon sehr viel ausprobiert ....ca 8 stunden ....erbitte hilfe !

[edit=Sharky]Code-Tags durch Delphi-Tags ersetzt. Mfg, Sharky[/edit]

Sharky 29. Jun 2005 20:22

Re: Probleme mit StringList und for schleifen
 
Zitat:

Zitat von agm65
.
.
Code:
  for i := 0  to sl.count -1 do
     begin
     sl.LoadFromFile(sl.Strings[i]));
.
end;

Du darfst nicht in einer Schleife welche die Items deiner StringList sl durchläuft diese verändern.
Durch das sl.LoadFromFile ändert sich ja die Anzahl der "Zeilen" in der StringListe!

agm65 29. Jun 2005 20:29

Re: Probleme mit StringList und for schleifen
 
also erstelle ich für diese procedure einen neue stringliste ?
Code:
tform.button1click;
var
i:integer;
sl3: TStringList;
begin
sl3.create;
try
  for i := 0  to sl.count -1 do
     begin
     sl3.LoadFromFile(sl.Strings[i]));
     edit1.text := sl.count;
     sl.clear;
     end;
end;
macht leider auch fehler !

malo 29. Jun 2005 20:31

Re: Probleme mit StringList und for schleifen
 
Delphi-Quellcode:
for i := 0  to sl.count -1 do
     begin
     sl.LoadFromFile(sl.Strings[i]));
     edit1.text := sl.count;
     sl.clear;
     end;
Hier fällt mir außerdem auf, dass am Ende jedes Schleifendurchlauf die StringListe geleert wird, wodurch beim nächsten Aufurf nicht mehr von sl.Strings[i] gelesen werden kann. Logischerweise ;)

Nachtrag: Warum speicherst du nicht Sl.Count - 1 in einer Variableß

//edit: Edit1.Text := sl.Count funktioniert auch nicht, da du ja einen Integerwert in einen String schreiben willst. Wenn du das machen willst, musst du zuvor mit Delphi-Referenz durchsuchenIntToStr Sl.Count umwandeln (wenn du wirklich die Zahl reinschreiben willst).

Sharky 29. Jun 2005 20:31

Re: Probleme mit StringList und for schleifen
 
Zitat:

Zitat von agm65
also erstelle ich für diese procedure einen neue stringliste ?

Was möchtest Du denn machen? So wie der Code aussieht hast Du in einer StringListe Dateinamen und möchtest jetzt wissen wie viele Zeilen jede dieser Dateien hat?

100nF 29. Jun 2005 20:33

Re: Probleme mit StringList und for schleifen
 
hi,

also ich stimme erstens mal Sharky zu.
aber noch was:
Zitat:

edit1.text := sl.count;
das geht doch gar nicht!
richtig wäre es so:
Delphi-Quellcode:
edit1.text := inttostr(sl.count);
erklär mal dein vorhaben etwas genauer...

P.S. eventuell musst du eine dritte stringlist verwenden, um die dateinamen zu speichern.

100nF 29. Jun 2005 20:35

Re: Probleme mit StringList und for schleifen
 
mit einer dritten stringlist müsste das etwa so aussehen:
Delphi-Quellcode:
s3.strings := s1.strings;
for i := 0  to s3.count -1 do
     begin
     sl.LoadFromFile(s3.Strings[i]));
     edit1.text := sl.count;
     sl.clear;
     end;

agm65 29. Jun 2005 20:37

Re: Probleme mit StringList und for schleifen
 
genau wartet mal ich behebe die dummen fehler !

malo 29. Jun 2005 20:39

Re: Probleme mit StringList und for schleifen
 
Zitat:

Zitat von urbanbruhin
mit einer dritten stringlist müsste das etwa so aussehen:
Delphi-Quellcode:
s3.strings := s1.strings;
for i := 0  to s3.count -1 do
     begin
     sl.LoadFromFile(s3.Strings[i]));
     edit1.text := sl.count;
     sl.clear;
     end;

Warum denn so?

Da wird doch nur unnötig Speicher verbraucht, weil eine Stringliste komplett kopiert wird. Man könnte ja gleich die Daten aus s1 in s3 speichern. So, wie es agm65 auch im Beispiel gepostet hat.


PS: Doppelposts sind ja nicht nötig, oder? Du kannst auch deine Beiträge editieren ;)

agm65 29. Jun 2005 20:43

Re: Probleme mit StringList und for schleifen
 
Code:
tform.button1click;
var
i:integer;
sl3: TStringList;
begin
sl3.create;
try
  for i := 0  to sl.count -1 do
     begin
     sl3.LoadFromFile(sl.Strings[i]));
     edit1.text := inttostr(sl3.count);
     sl3.clear;
     end;
end;
das macht auch fehler, exception zugriffs verletzung


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 3  1 23      

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