Autor Beitrag
Anfänger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: Di 04.05.04 20:41 
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:
ausblenden 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 user profile iconPeter Lustig (16:59, 05.05.2004): Topic verschoben
Lemon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 96

Win XP
D5 Standart
BeitragVerfasst: Di 04.05.04 20:52 
die stringlisten muessen erst einmal erstellt werden:

ausblenden Delphi-Quelltext
1:
UListe := TStringList.Create;					


auch wenn du sie mit clear loescht...
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 04.05.04 21:27 
Hi,

außerdem solltest du TStringlist verwenden und nicht direkt TStrings...
Anfänger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: Di 04.05.04 22:04 
Danke für die Hilfe hat geklappt :lol:
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  sl:=TStringList.Create;
  try
    sl.Add('Test');
    Memo1.Lines.Assign(sl);
  finally
    sl.Free;
  end// try

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Mi 05.05.04 08:56 
Stimmt, was die Aussage der Zuweisung betrifft, mein Fehler.

Gruß
KidPaddle
Benedikt
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.