Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Anfängerfrage, TMemo & TStringlist (https://www.delphipraxis.net/85157-anfaengerfrage-tmemo-tstringlist.html)

MaGe 26. Jan 2007 17:52


Anfängerfrage, TMemo & TStringlist
 
Moin, moin,

ich lerne so abends nebenbei seit letzer Woche Delphi und stoße natürlich als Anfänger immer wieder auf kleine Probleme. :)
Ich hab mir in den Sinn gesetzt aus einem TMemo-Feld den eingegeben Inhalt in ein TStringList zu schreiben und wieder zurück.
Leider klappt das nicht so wie ich mir das Vorstelle und nach einer etwas längeren Woche (Gehirn etwas ausgepowert) und einer kurzen Suche hier im Forum bin ich nicht klüger.
Delphi-Quellcode:
procedure TForm1.Button1(Sender: TObject);
var
  mylist : TStringList;
  i : Integer;
begin
   mylist.Create;
   if Memo1.MaxLength >0 then
   begin
      for i:= 0 to Memo1.MaxLength do begin
          mylist.add(Memo1.Lines[i]);
      end;
   end;
end;
Naja compilieren lässt sich das gebe ich dann im TMemofeld z.b.:
alpha
beta
delta
usw.

ein dann bekomme ich bei MaxLength 0
Lass ich mir aber alles als Memo1.Text geben bekomme ich einen String, habs mir auf ein Label ausgegeben.
Jetzt steh ich aber auf der Leitung (wieder einmal), warum bekomme ich bei Lines nix raus und warum ist da MaxLength 0? Hat da einer noch am Freitag abend lust mir (wieder mal) von der Leitung zu helfen?

Gruß

Ma.Ge.

marabu 26. Jan 2007 18:03

Re: Anfängerfrage, TMemo & TStringlist
 
Hallo,

eine Liste erzeugst du durch den Aufruf des Konstruktors als Klassenmethode:

Delphi-Quellcode:
mylist := TStringList.Create;
Nicht MaxLength, sondern Memo.Lines.Count liefert dir die Anzahl an Zeilen im Memo. Diese werden von 0 bis Count - 1 indiziert. Und wenn du deine Liste als lokale Variable deklarierst, dann ist sie nur innerhalb deiner Prozedur erreichbar. Gib sie deshalb am Ende auch wieder frei.

Delphi-Quellcode:
procedure TForm1.Button1(Sender: TObject);
var
  myList : TStringList;
  i : Integer;
begin
  myList := TStringList.Create;
  for i:= 0 to Pred(Memo1.Lines.Count) do
    mylist.add(Memo1.Lines[i]);
  ShowMessage(myList.Text);
  myList.Free;
end;
Grüße vom marabu

MaGe 26. Jan 2007 18:19

Re: Anfängerfrage, TMemo & TStringlist
 
ah danke für die schnelle Antwort! Man lernt nie aus! :D

marabu 26. Jan 2007 18:30

Re: Anfängerfrage, TMemo & TStringlist
 
Übrigens: Sobald du der Schleife überdrüssig wirst, kannst du das Kopieren auch so erledigen:

Delphi-Quellcode:
myList.Assign(Memo.Lines);
Das wäre dann dein erster Vorstoß in die Gefilde der Objekt-Orientierung. Du solltest alles was dir unbekannt vorkommt in der Delphi Online-Hilfe nachschlagen.

Freundliche Grüße

MaGe 27. Jan 2007 17:15

Re: Anfängerfrage, TMemo & TStringlist
 
Das wäre meine nächste Aufgabenstellung an mich gewesen ob das nicht eleganter geht! Danke für den Tipp Marabu

Gruß

Ma.Ge


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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