AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie funktioniert SetPropValue bei TMemo.Lines?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie funktioniert SetPropValue bei TMemo.Lines?

Ein Thema von steffen_d · begonnen am 24. Apr 2009 · letzter Beitrag vom 24. Apr 2009
Antwort Antwort
steffen_d

Registriert seit: 28. Nov 2004
Ort: Leipzig
27 Beiträge
 
#1

Wie funktioniert SetPropValue bei TMemo.Lines?

  Alt 24. Apr 2009, 18:16
Hallo,

ich komm hier irgendwie nicht weiter:

Ich versuche per SetPropValue an einem TMemo die Lines zu verändern.
Da verträgt sich aber Variant nicht mit TStrings.

Also probierte ich die spezielleren Methoden setOrdProp und setObjectProp.

Mit GetObjectProp bekomme ich die Lines, kann sie auch mit ShowMessage anzeigen.
Adde ich dann "Zeile 3" und schreibe mit SetObjectProp zurück, dann sind die Lines leer.

Mit einfachen Typen funktioniert SetPropValue, ich kann z.B. bei einem TButton die Caption oder Left, Top usw. verändern.

Ich nutze Delphi 7 Professional und Win XP Professional.

Hat vielleicht jemand eine Idee?

Danke im Voraus
Steffen

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  ts : TStrings;
begin
  Memo1.Lines.Add('Zeile 1');
  Memo1.Lines.Add('Zeile 2');
  ts := TStrings(getObjectProp(Memo1, 'Lines'));
// ts := TStrings(getOrdProp(Memo1, 'Lines'));
  ShowMessage(ts.text);
  ts.Add('Zeile 3');
  setObjectProp(Memo1, 'Lines', ts);
// setOrdProp(Memo1, 'Lines', integer(ts));
  ts := TStrings(getOrdProp(Memo1, 'Lines'));
end;
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Wie funktioniert SetPropValue bei TMemo.Lines?

  Alt 24. Apr 2009, 18:18
Lass das SetObjectProp. Allein durch das Add wird die Zeile schon hinzugefügt.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
steffen_d

Registriert seit: 28. Nov 2004
Ort: Leipzig
27 Beiträge
 
#3

Re: Wie funktioniert SetPropValue bei TMemo.Lines?

  Alt 24. Apr 2009, 18:28
Danke ,

stimmt, ts ist ja ein Pointer auf die Lines.

Komisch ist nur, dass die Lines leer sind, wenn ich ts nochmal zuweise.
Eigentlich dürfte dass doch nichts verändern, oder?

Danke und Gruß
Steffen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie funktioniert SetPropValue bei TMemo.Lines?

  Alt 24. Apr 2009, 18:39
Durch die Zuweisung wird im Prinzip ts.Assign(ts) aufgerufen. Nun wird in der Assign-Methode aber erst Self.Clear aufgerufen und dann die Zeilen der anderen Liste hinzugefügt. Das funktioniert natürlich nicht, wenn Self und Argument identisch sind.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
steffen_d

Registriert seit: 28. Nov 2004
Ort: Leipzig
27 Beiträge
 
#5

Re: Wie funktioniert SetPropValue bei TMemo.Lines?

  Alt 24. Apr 2009, 20:00
Hallo,

ja, das leuchtet ein .

Danke nochmal.
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 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