Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - TStrings problem
Anfänger - Di 04.05.04 20:41
Titel: TStrings problem
Ich habe eine Prozedur, die einfach eine Datei.txt laden, die Zeilen vertauschen und vertauscht speichert.
Erst klappte es auch, solange ich alles mit 2 Listboxen gemacht habe.
Als ich die Listboxen durch Strings erstetzte machte er probleme.
Verstehe ich nicht :roll:
So sieht die Prozedur jetzt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.Button2Click(Sender: TObject); var I,A:Integer; UListe,EListe:TStrings; begin Randomize; If Opendialog1.Execute then begin UListe.LoadFromFile(Opendialog1.Filename); EListe.Clear; For I:=0 to UListe.Count do begin if UListe.Count <>0 then begin A:=Random(UListe.Count); EListe.Add(UListe[A]); UListe.Delete(A); end; end; if Savedialog1.Execute then begin EListe.SaveToFile(SaveDialog1.Filename+'.txt'); ShowMessage('OK'); end else ShowMessage('Datei konnte nicht gespeichert werden'); end else ShowMessage('Datei konnte nicht geladen werden'); end; |
bin dankbar für jede Hilfe
Moderiert von
Peter Lustig (16:59, 05.05.2004): Topic verschoben
Lemon - Di 04.05.04 20:52
die stringlisten muessen erst einmal erstellt werden:
Delphi-Quelltext
1:
| UListe := TStringList.Create; |
auch wenn du sie mit clear loescht...
Delete - Di 04.05.04 21:27
Hi,
außerdem solltest du TStringlist verwenden und nicht direkt TStrings...
Anfänger - Di 04.05.04 22:04
Danke für die Hilfe hat geklappt :lol:
KidPaddle - Mi 05.05.04 08:30
| Benedikt hat folgendes geschrieben: |
Hi,
außerdem solltest du TStringlist verwenden und nicht direkt TStrings... |
Warum sollte er das tun? Die Strings sind an Memo's. Listboxen usw. übergebar, TStringlist jedoch nicht. Also Variablen als TStrings deklaríeren und als TStringlist zum erstellen der Instanz verwenden. Da diese zuweisungskompatible sind, gibt es damit keine Probleme.
Gruß
KidPaddle
smiegel - Mi 05.05.04 08:45
Hallo,
| KidPaddle hat folgendes geschrieben: |
Die Strings sind an Memo's. Listboxen usw. übergebar, TStringlist jedoch nicht.
|
Diese Aussage ist falsch!!!
Siehe folgendes Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| sl:=TStringList.Create; try sl.Add('Test'); Memo1.Lines.Assign(sl); finally sl.Free; end; |
KidPaddle - Mi 05.05.04 08:56
Stimmt, was die Aussage der Zuweisung betrifft, mein Fehler.
Gruß
KidPaddle
Delete - Mi 05.05.04 16:43
| KidPaddle hat folgendes geschrieben: |
| Benedikt hat folgendes geschrieben: | Hi,
außerdem solltest du TStringlist verwenden und nicht direkt TStrings... |
Warum sollte er das tun? |
Erstens kannst du die wohl übergeben, wie smiegel schon schrieb, außerdem sind bei TStringList einige sinnvolle Methoden integriert bzw. erst gepublished (Sort etc.) und drittens meint z.B. auch die Delphi-Hilfe:
| Delphi-Hilfe hat folgendes geschrieben: |
Von TStrings abgeleitete Objekte ermöglichen die Speicherung und Bearbeitung von String-Listen. TStrings enthalten abstrakte bzw. rein virtuelle (C++ Terminologie) Methoden und sollten nicht direkt instantiiert werden.
|
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!