![]() |
AW: Innere Struktur von TStrings / TMemo
Zitat:
in .Lines finden sich die angezeigten Zeilen des Memos bzw. die Zeilen so wie sie angezeigt würden. Gruß K-H |
AW: Innere Struktur von TStrings / TMemo
Hallo,
schön wäre es gewesen, mal anständige Variablennamen zu benutzen ... Heiko |
AW: Innere Struktur von TStrings / TMemo
@ #10
Also ich erkenne auf dem Weg zum Speicher keine Änderung an dem String. Zu beachten ist auch, dass der String stets als Konstante übergeben wird.
Delphi-Quellcode:
function TStringList.Add(const S: string): Integer;
begin Result := AddObject(S, nil); end; function TStringList.AddObject(const S: string; AObject: TObject): Integer; begin if not Sorted then Result := FCount else if Find(S, Result) then case Duplicates of dupIgnore: Exit; dupError: Error(@SDuplicateString, 0); end; InsertItem(Result, S, AObject); end; procedure TStringList.InsertItem(Index: Integer; const S: string; AObject: TObject); begin Changing; if FCount = FCapacity then Grow; if Index < FCount then System.Move(FList^[Index], FList^[Index + 1], (FCount - Index) * SizeOf(TStringItem)); with FList^[Index] do begin Pointer(FString) := nil; FObject := AObject; FString := S; end; Inc(FCount); Changed; end; function TStringList.Find(const S: string; var Index: Integer): Boolean; ... |
AW: Innere Struktur von TStrings / TMemo
@Popov
Das war und ist auch nicht das Problem, sondern das spezielle Verhalten der konkreten
Delphi-Quellcode:
Klasse bei einem
TStrings
Delphi-Quellcode:
.
TMemo
Der gesamte Code mit dem kopieren und befüllen von
Delphi-Quellcode:
ist irrelevant und eher störend. Das beobachtete Verhalten kann man ganz simpel mit einem
TStrings
Delphi-Quellcode:
nachstellen.
TMemo
Delphi-Quellcode:
procedure TForm1.Button2Click( Sender: TObject );
begin Memo1.Width := 105; Memo1.Text := 'Dieses ist ein toller langer Text der in einem Memo angezeigt werden soll.'; ShowMessage( IntToStr( Memo1.Lines.Count ) ); // 5 ShowMessage( Memo1.Lines.Text ); // trotzdem nur eine Zeile ohne Zeilenumbrüche end; |
AW: Innere Struktur von TStrings / TMemo
Das genannte Problem von p80286 eine Komponente als Datenspeicher zu missbrauchen ist in diesem Fall ein Ausnahmeproblem. Es ist kein TStrings Problem, auch kein TListBox Problem, sondern nur ein TMemo Problem.
Meine Antwort bezog sich übrigens auf den Hinweis in Post #10. Hätte p80286 statt TMemo TListBox genommen, sein Problem wäre vermutlich nicht aufgefallen. TListBox ändert nichts, speichert aber ähnlich wie TMemo. Nur das Bearbeiten des Textes geht nicht so einfach wie bei TMemo. Ich weiß nicht wo ich den Hinweis gelesen habe, ob im Code oder der Hilfe, auf jeden Fall stand dort, das bei TMemo TStrings nicht so arbeitet wie es eigentlich tun sollte. |
AW: Innere Struktur von TStrings / TMemo
Zitat:
|
AW: Innere Struktur von TStrings / TMemo
Zitat:
|
AW: Innere Struktur von TStrings / TMemo
Zitat:
Wenn man eine Klasse kennt, dann erwartet man immer gleiches Verhalten. Hier ist es nicht der Fall. |
AW: Innere Struktur von TStrings / TMemo
Es verhällt sich alles genau so, wie es soll.
Bezüglich der Zeilenumbrüche funktioniert alles vollkommen richtig, genau so wie es die Definition der Komponente besagt. TStrings bietet die Möglichkeit Objekte zu speichern, aber es muß nicht implementiert sein. Gut, ich empfinde es schon immer als Fehler, daß der Objects-Setter von TMemoStrings keine Exceptions wirft, aber auf mich hört ja keiner. Und nein, da MEMO es nicht anbietet, daß Zeilenbasiert Informationen gespeichert werden können, kann auch Lines dieses Feature nicht anbieten. Bei TStringList und dn Items einer TListBox ist das was Anderes, denn dort besitzen die Komponenten einen Speicher dafür. |
AW: Innere Struktur von TStrings / TMemo
Sonderbar, im ersten Post steht etwas über Probleme, aber kaum geht man drauf ein, schon behaupten alle, dass alles so ist wie es sein soll. Wozu dann die Frage?
Natürlich ist es so wie es sein soll. Deshalb auch der Hinweis in der Hilfe. Hat zwar jetzt nichts mit dem Thema zu tun, aber mit TStrings: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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