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 Ich glaub ich bin bl... [TMEMO und TStrings] (https://www.delphipraxis.net/28642-ich-glaub-ich-bin-bl-%5Btmemo-und-tstrings%5D.html)

NeoXan 27. Aug 2004 12:18


Ich glaub ich bin bl... [TMEMO und TStrings]
 
Kann mir mal jemand verranten weshalb das hier nicht klappt?

Delphi-Quellcode:
var s: TStrings;
begin
 s := Memo1.Lines;
 Memo1.Lines := s;
end;
Das Memo ist danach leer...

Luckie 27. Aug 2004 12:23

Re: Ich glaub ich bin bl... [TMEMO und TStrings]
 
Erstmal erzeugst du keine Instanz von s:
Delphi-Quellcode:
s := TStrings.Create;
Dann weißt du s den Inhalt eines Memos zu. ist selbiges eventuell leer?

Dann weißt du s dem Memo zu. Da du aber keine Instanz von s erstellt hast, kann es gar keine Daten enthalten. Dass es nicht knallt ist wohl reibe Glückssache.

Und zu guterletzt: TStrings ist eine Basisklasse mit abstrakten, also noch nicht implementieerten Methoden. Nutze für dein Vorhaben die Klasse TStringlist.

NeoXan 27. Aug 2004 12:40

Re: Ich glaub ich bin bl... [TMEMO und TStrings]
 
Ok, auch mit erstellter Instanz klappt es nicht. Das Memo ist definitiv gefüllt.

Wie mache ich die Zuweisung denn mit Stringlist?
Das eigentlich prob ist nämlich folgendes:

Delphi-Quellcode:
procedure DelLast(var Strs: TStrings);
var i,j,k : integer;
begin
 for i := 0 to Strs.Count-1 do
  begin
   if AnsiStartsStr('<TD>',Strs[i]) then
      begin
       for j := -1 to 8 do
         Strs.Delete(i);
       break;
      end;
  end;
end;

var s: TStrings;
begin
 s := TStrings.Create;
 s := Memo1.Lines;
 DelLast(s);
 Memo1.Lines := s;
end;
Das Memo wollt' ich nicht als Parameter übergeben, da ich in der späteren Version mehr oder weniger ohne VCL arbeiten wollte.

Sanchez 27. Aug 2004 12:42

Re: Ich glaub ich bin bl... [TMEMO und TStrings]
 
Hallo,

Stringlisten kannst du mit Assign zuweisen.
Also so:
Delphi-Quellcode:
var s: TStrings;
begin
 s := TStrings.Create;
 s.Assign(Memo1.Lines);
 DelLast(s);
 Memo1.Lines.Assign(s);
end;
grüße, daniel

NeoXan 27. Aug 2004 12:43

Re: Ich glaub ich bin bl... [TMEMO und TStrings]
 
oh...es klappt, wenn ich die letzte Zuweisung weglasse :)
Vielen Dank...

Golze 27. Aug 2004 16:55

Re: Ich glaub ich bin bl... [TMEMO und TStrings]
 
Hallo zusammen,
habe gerade mal so aus Interesse dein Problem mit den Lösungen gelesen. Ich denke es ist noch einfacher. Die Erklärung, warum deine Zuweisung nicht klappt ist ok. Hier die einfache Lösung:

Dein Problem war ....
var s: TStrings;
begin
s := Memo1.Lines;
Memo1.Lines := s;
end;

Die Lösung:
var s: TStrings;
begin
s := TStrings.Create;
s.AddStrings(Memo1.Lines);
Memo1.Lines.AddStrings(s);
....
s.Free;

Du kannst TStrings genauso nutzen wie TStringList. Mann sollte jedoch TStringList immer der anderen Klasse vorziehen. Wichtiger wie die Klasse ist die Eigenschaft AddStrings. Assign ist gut, aber nicht optimal (wie du ja selbst gesehen hast).

Grüße
Kay


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