AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein mehrere stringlists hintereinander anhängen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere stringlists hintereinander anhängen

Ein Thema von cRayZo · begonnen am 28. Aug 2008 · letzter Beitrag vom 3. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#1

mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:09
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:12
slFinish.AddStrings( sl1);
Markus Kinzler
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#3

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:22
das funktioniert irgendwie nicht..

es gibt nur sl.add und sl.addobject
..?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:24
Dann ist die Methode wohl erst mit einer späteren Delphiversion gekommen;
slfinish.CommaText:=sl1.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText;
Markus Kinzler
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#5

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:37
Zitat von mkinzler:
Dann ist die Methode wohl erst mit einer späteren Delphiversion gekommen;
slfinish.CommaText:=sl1.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText;
also so habe ich das jetzt mal verscuht..
hier mein Code:
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;
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;
es startet ohne Probleme, aber wenn ich bei den Checkboxes etwas anklicke und dann auf Button3 gehe, kommt wie gesagt die Zugriffsverletzung
kann es sein, dass die fehlermeldung kommt, weil sl.Commatext hinzugefügt wird, der nicht eistiert?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:40
Weisse des Stringlisten mal jeweils einen Leerstring zu.
Ansonsten schau mal im Debugger, in welcher Zeile der Fehler auftritt
Btw.: Besser
sl, sl2, sl3, sl4, sl5, sl6, slfinish: TStrings;
Markus Kinzler
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#7

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 21:51
Nabend,

öhm, überseh ich was oder createst du slfinish überhaupt nicht?

MfG Benedikt
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#8

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 22:01
Zitat von Benedikt:
Nabend,

öhm, überseh ich was oder createst du slfinish überhaupt nicht?

MfG Benedikt


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;
  Mit Zitat antworten Zitat
cRayZo

Registriert seit: 30. Jul 2007
156 Beiträge
 
Delphi 6 Personal
 
#9

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 22:30
aaaalso

ich habs mir selbst beantwortet, poste das hier aber, weil es vielleicht auch für andere wichtig ist:
Zitat von mkinzler:
Dann ist die Methode wohl erst mit einer späteren Delphiversion gekommen;
slfinish.CommaText:=sl1.CommaText+sl2.CommaText+sl3.CommaText+sl4.CommaText;
das ist korrekt.. ABER
die letzte Zeile von sl und die erste Zeile von sl2 werden in einer Zusammengefasst!
man sollte also zwischendurch immer ein slfinish.add('') einfügen, um einen "Zeilenumbruch" zu erzeugen, damit jede Zeile auch wirklich einzeln vorliegt

danke trotzdem an euch alle, habt mir sehr geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

Re: mehrere stringlists hintereinander anhängen

  Alt 28. Aug 2008, 23:43
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);
...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz