![]() |
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:
ich bekomme ne fehlermeldung, dass ich nen maximum wert überschritten habe ?
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; aber wieso ? habe schon sehr viel ausprobiert ....ca 8 stunden ....erbitte hilfe ! [edit=Sharky]Code-Tags durch Delphi-Tags ersetzt. Mfg, Sharky[/edit] |
Re: Probleme mit StringList und for schleifen
Zitat:
Durch das sl.LoadFromFile ändert sich ja die Anzahl der "Zeilen" in der StringListe! |
Re: Probleme mit StringList und for schleifen
also erstelle ich für diese procedure einen neue stringliste ?
Code:
macht leider auch fehler !
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; |
Re: Probleme mit StringList und for schleifen
Delphi-Quellcode:
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 ;)
for i := 0 to sl.count -1 do
begin sl.LoadFromFile(sl.Strings[i])); edit1.text := sl.count; sl.clear; end; 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 ![]() |
Re: Probleme mit StringList und for schleifen
Zitat:
|
Re: Probleme mit StringList und for schleifen
hi,
also ich stimme erstens mal Sharky zu. aber noch was: Zitat:
richtig wäre es so:
Delphi-Quellcode:
erklär mal dein vorhaben etwas genauer...
edit1.text := inttostr(sl.count);
P.S. eventuell musst du eine dritte stringlist verwenden, um die dateinamen zu speichern. |
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; |
Re: Probleme mit StringList und for schleifen
genau wartet mal ich behebe die dummen fehler !
|
Re: Probleme mit StringList und for schleifen
Zitat:
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 ;) |
Re: Probleme mit StringList und for schleifen
Code:
das macht auch fehler, exception zugriffs verletzung
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; |
Re: Probleme mit StringList und for schleifen
2 Bitten:
1. Bitte verwende anstelle der [ code ] -Tags die [ delphi ]-Tags ;) 2. Nenne uns doch auch mal die Fehler :roll: //edit: Lies dir mal meine Posts genau durch. Da steht, wo dein Fehler auftritt. |
Re: Probleme mit StringList und for schleifen
Ähmmm....
das darf überhaupt nicht Compiliert werden!!! sl3.create gibt es doch nicht. Schaue Dir mal diesen Code von mir an:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin slFileNames := TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin slFileNames.Free; end; procedure TForm1.CounteLines(const aFileName: string; aOutPut: TStrings); var ndx: integer; slCount: TStringList; begin slCount := TStringList.Create; try slFileNames.LoadFromFile(aFileName); for ndx := 0 to Pred(slFileNames.Count) do begin slCount.LoadFromFile(slFileNames.Strings[ndx]); aOutPut.Add(IntToStr(slCount.Count)); end; finally slCount.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var FileName : string; begin FileName := 'Name der Datei mit der Liste'; CounteLines (FileName,ListBox1.Items); end; P.S.: Verwende doch bitte die Delphi-Tags und nicht die Code-Tags. |
Re: Probleme mit StringList und for schleifen
Zitat:
|
Re: Probleme mit StringList und for schleifen
Zitat:
Freundlicherweise verweise ich nochmal auf den Post: ![]() |
Re: Probleme mit StringList und for schleifen
luckie, du das hast recht, es tut mir leid !
ich werde mir mühe geben mehr infos in meine posts zu packen !
Delphi-Quellcode:
ich bekomme eine exception der klasse EAccessViolent, und es wird nicht compiliert !
sl3: TStringList;
i: integer; begin sl3.Create; try for i := 0 to sl.count-1 do begin memo1.Lines.Add(sl.Strings[i]); sl3.LoadFromFile(sl.strings[i]); sl3.clear; end; |
Re: Probleme mit StringList und for schleifen
Zitat:
Das eine ist LoadFromFile. Da wird ein Dateipfad angegeben und daraus werden dann die Strings gelesen. Das mit dem Memo speichert doch nur die StringListen-Einträge in dem Memo. Da könnte man aber auch folgendes machen:
Delphi-Quellcode:
Memo1.Text := sl.Text;
|
Re: Probleme mit StringList und for schleifen
probiers mal so:
Delphi-Quellcode:
tform.button1click;
var i:integer; sl3: tstringlist; begin sl3 := tstringlist.create; sl3.strings := sl.strings; try for i := 0 to sl3.count -1 do begin sl.clear; sl.LoadFromFile(sl3.Strings[i])); edit1.text := inttostr(sl.count); end; end; |
Re: Probleme mit StringList und for schleifen
man ich habs !! DANKE Sharky !
noch ne kurze frage...wie konvertiere ich tstrings in strings ? oder integer in tstring ? |
Re: Probleme mit StringList und for schleifen
Zitat:
Du kannst die Eigenschaft Text von TString verwenden.
Delphi-Quellcode:
Das gibt dir den gesamten Inhalt der StringListe als String wieder.
s := StringList.Text;
Integer in TString versteh ich nicht :gruebel: Wofür soll das gut sein? |
Re: Probleme mit StringList und for schleifen
Zitat:
Zitat:
|
Re: Probleme mit StringList und for schleifen
Delphi-Quellcode:
hier sagt er mir inkompatible typen tstring und string !
listview1.Items[i].SubItems:= (inttostr(slLoadFiles.count));
|
Re: Probleme mit StringList und for schleifen
Zitat:
TStrings ist eine Abstrakte Klasse die eigentlich überhaupt nichts kann. Es ist aber der Vorfahre von vielen "String-Klassen". TMemo.Lines -> TStrings TListBox.Items -> TStrings TStringList.Items -> TStrings In meinem Code siehst Du ja das ich z.B. eine TListBox verwendet habe um die Anzahl der Zeilen anzuzeigen.
Delphi-Quellcode:
Mit dieser Zeile wird einfach die Anzahl (slCount.Count) in einen String gewandelt und dann als neue "Zeile" in ein "TStrings" (in diesem Falle ist es TListBox.Items) angehängt.
aOutPut.Add(IntToStr(slCount.Count));
|
Re: Probleme mit StringList und for schleifen
und wie würde das jetzt bei meinem konkreten beispiel aussehen ?
|
Re: Probleme mit StringList und for schleifen
Zitat:
Delphi-Quellcode:
listview1.Items[i].SubItems[0]:= (inttostr(slLoadFiles.count));
|
Re: Probleme mit StringList und for schleifen
lol...womit wir wieder bei den maximumindex fehlern sind....
ich bin penner teste es echt :) ! |
Re: Probleme mit StringList und for schleifen
Hmmm... was hälst Du denn davon Dir mal die Hilfe für die Eigenschaften die Du verwenden möchte durchzulesen.
|
Re: Probleme mit StringList und for schleifen
Hallo,
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr. |
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