![]() |
mehrere stringlists hintereinander anhängen
abend ;)
wie kann ich verschiedene stringlists so wie lines.add einfach hintereinander in eine weitere stringlist einfügen? also in etwa so:
Delphi-Quellcode:
var sl1, sl2, sl3, sl4, slfinish:TStringlist
begin slfinish:=sl1+sl2+sl3+sl4; |
Re: mehrere stringlists hintereinander anhängen
Delphi-Quellcode:
slFinish.AddStrings( sl1);
|
Re: mehrere stringlists hintereinander anhängen
das funktioniert irgendwie nicht..
es gibt nur sl.add und sl.addobject ..? |
Re: mehrere stringlists hintereinander anhängen
Dann ist die Methode wohl erst mit einer späteren Delphiversion gekommen;
Delphi-Quellcode:
slfinish.CommaText:=sl1.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText;
|
Re: mehrere stringlists hintereinander anhängen
Zitat:
hier mein Code:
Delphi-Quellcode:
es startet ohne Probleme, aber wenn ich bei den Checkboxes etwas anklicke und dann auf Button3 gehe, kommt wie gesagt die Zugriffsverletzung
procedure Tdrucken.Button3Click(Sender: TObject);
var sl, sl2, sl3, sl4, sl5, sl6, slfinish: TStringList; F: textfile; zeilennr: integer; vokabel,Loesung:string; RetVal: Integer; begin sl:=TStringList.Create; sl2:=TStringList.Create; sl3:=TStringList.Create; sl4:=TStringList.Create; sl6:=TStringList.Create; sl6:=TStringList.Create; Stringlistx:=sl; if checkbox1.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\ungeuebt.txt'); try sl.LoadFromFile('c:\Vokabeltrainer\Vokabeln\ungeuebt.txt'); except end; end; if checkbox2.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\nicht gekonnt.txt'); try sl2.LoadFromFile('c:\Vokabeltrainer\Vokabeln\nicht gekonnt.txt'); except end; end; if checkbox3.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gelernt.txt'); try sl3.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gelernt.txt'); except end; end; if checkbox4.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); try sl4.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); except end; end; if checkbox5.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\sehr gut gelernt.txt'); try sl5.LoadFromFile('c:\Vokabeltrainer\Vokabeln\sehr gut gelernt.txt'); except end; end; if checkbox6.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); try sl6.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); except end; end; slfinish.CommaText:=sl.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText+sl5.CommaText+sl6.CommaText; kann es sein, dass die fehlermeldung kommt, weil sl.Commatext hinzugefügt wird, der nicht eistiert? |
Re: mehrere stringlists hintereinander anhängen
Weisse des Stringlisten mal jeweils einen Leerstring zu.
Ansonsten schau mal im Debugger, in welcher Zeile der Fehler auftritt Btw.: Besser
Delphi-Quellcode:
sl, sl2, sl3, sl4, sl5, sl6, slfinish: TStrings;
|
Re: mehrere stringlists hintereinander anhängen
Nabend,
öhm, überseh ich was oder createst du slfinish überhaupt nicht? MfG Benedikt |
Re: mehrere stringlists hintereinander anhängen
Zitat:
jo..^^ du hattest Recht.. also ich hab den Code jetzt wie folgt, aber er liest manche stringlists nur in das stringgrid ein, wenn er auch andere mit einliest. Zum Beispiel: wenn nur ckeckbox1 activiert ist zeigt er nur die überschrift an im stringgrid, nämlcih "Übersetzung", und "Vokabel" der inhalt erscheint nicht.. aber wenn checkbox1 und checkbox2 gleichzeitig aktiviert sind, dann werden beide inhalte auch angezeigt. uswusw woran kann das liegen?
Delphi-Quellcode:
procedure Tdrucken.Button3Click(Sender: TObject);
var sl, sl2, sl3, sl4, sl5, sl6, slfinish: TStringlist; F: textfile; zeilennr: integer; vokabel,Loesung:string; RetVal: Integer; begin sl:=TStringList.Create; sl2:=TStringList.Create; sl3:=TStringList.Create; sl4:=TStringList.Create; sl5:=TStringList.Create; sl6:=TStringList.Create; slfinish:=TStringList.Create; if checkbox1.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\ungeuebt.txt'); try sl.LoadFromFile('c:\Vokabeltrainer\Vokabeln\ungeuebt.txt'); except end end else sl.Text:=''; if checkbox2.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\nicht gekonnt.txt'); try sl2.LoadFromFile('c:\Vokabeltrainer\Vokabeln\nicht gekonnt.txt'); except end end else sl2.Text:=''; if checkbox3.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gelernt.txt'); try sl3.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gelernt.txt'); except end end else sl3.Text:=''; if checkbox4.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); try sl4.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); except end end else sl4.Text:=''; if checkbox5.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\sehr gut gelernt.txt'); try sl5.LoadFromFile('c:\Vokabeltrainer\Vokabeln\sehr gut gelernt.txt'); except end end else sl5.Text:=''; if checkbox6.Checked=True then begin AssignFile(F,'c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); try sl6.LoadFromFile('c:\Vokabeltrainer\Vokabeln\gut gelernt.txt'); except end end else sl6.Text:=''; slfinish.CommaText:=sl.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText+sl5.CommaText+sl6.CommaText; Stringgrid1.RowCount:=slfinish.Count; Stringgrid1.Cells[1,0]:='Vokabel' ; Stringgrid1.Cells[0,0]:='Übersetzung'; for zeilennr:=0 to slfinish.Count-1 do begin splitstr(slfinish.Strings[zeilennr],'=',Vokabel, Loesung); Stringgrid1.Cells[1,zeilennr+1]:=Vokabel; Stringgrid1.Cells[0,zeilennr+1]:=Loesung; end; Stringlistx:=slfinish; end; |
Re: mehrere stringlists hintereinander anhängen
aaaalso
ich habs mir selbst beantwortet, poste das hier aber, weil es vielleicht auch für andere wichtig ist: Zitat:
die letzte Zeile von sl und die erste Zeile von sl2 werden in einer Zusammengefasst! man sollte also zwischendurch immer ein
Delphi-Quellcode:
einfügen, um einen "Zeilenumbruch" zu erzeugen, damit jede Zeile auch wirklich einzeln vorliegt
slfinish.add('')
danke trotzdem an euch alle, habt mir sehr geholfen! |
Re: mehrere stringlists hintereinander anhängen
Auwa, das ist aber umständlich.
Du brauchst doch keine 6 Stringlisten, sondern nur 2.
Delphi-Quellcode:
// ungetestet
// diese Procedur hängt den Inhalt einer Datei an ein TStrings-Objekt an procedure AppendFileToStrings(const filename:string; list:TStrings); var tmp : TStringList; begin if FileExists(filename) then begin tmp := TStringList.Create; tmp.LoadFromFile(filename); list.AppendStrings(tmp); tmp.Free; end; end; ... if checkbox3.Checked then // nicht auf =True abfragen ! // ein eleganter Einzeiler :-) AppendFileToStrings('c:\Vokabeltrainer\Vokabeln\gelernt.txt', slfinish); ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz