![]() |
Ich glaub ich bin bl... [TMEMO und TStrings]
Kann mir mal jemand verranten weshalb das hier nicht klappt?
Delphi-Quellcode:
Das Memo ist danach leer...
var s: TStrings;
begin s := Memo1.Lines; Memo1.Lines := s; end; |
Re: Ich glaub ich bin bl... [TMEMO und TStrings]
Erstmal erzeugst du keine Instanz von s:
Delphi-Quellcode:
Dann weißt du s den Inhalt eines Memos zu. ist selbiges eventuell leer?
s := TStrings.Create;
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. |
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:
Das Memo wollt' ich nicht als Parameter übergeben, da ich in der späteren Version mehr oder weniger ohne VCL arbeiten wollte.
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; |
Re: Ich glaub ich bin bl... [TMEMO und TStrings]
Hallo,
Stringlisten kannst du mit Assign zuweisen. Also so:
Delphi-Quellcode:
grüße, daniel
var s: TStrings;
begin s := TStrings.Create; s.Assign(Memo1.Lines); DelLast(s); Memo1.Lines.Assign(s); end; |
Re: Ich glaub ich bin bl... [TMEMO und TStrings]
oh...es klappt, wenn ich die letzte Zuweisung weglasse :)
Vielen Dank... |
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 22:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz