Delphi-PRAXiS
Seite 3 von 3     123   

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 FindComponent auch für property ??? (https://www.delphipraxis.net/68443-findcomponent-auch-fuer-property.html)

jim_raynor 30. Apr 2006 13:35

Re: FindComponent auch für property ???
 
Bei GetPropInfo bekommst du einen Pointer auf einen Record TPropInfo zurück, der ein Feld Default hat. Da der allerdings nur ein LongInt ist, weiß ich net, was bei einer String-Property drin steht. Vielleicht garnichts, vielleicht aber auch der richtige String, bei einem entsprechende Cast:

Delphi-Quellcode:
var
  PropInfo: PPropInfo;
begin
  PropInfo:=GetPropInfo(Form1,'Caption');
  showmessaege(String(Pointer(PropInfo.Default));
end;
Keine Ahnung ob es klappt.

Martin K 30. Apr 2006 13:45

Re: FindComponent auch für property ???
 
Danke!
Bei Integer- und Boolean-Typen klappt's wunderbar (ordinale Typen).
Wenn man eben String() durch IntToStr() ersetzt.

Delphi-Quellcode:
IntToStr(GetPropInfo(Self,'Caption').Default

Bei einem String:
Mit IntToStr() wird -2147483648 zurückgeliefert,
String() löst eine AV aus.

Weiß jemand, wie man sonst noch -2147483648 in einen ordentlichen String umwandeln kann?

jim_raynor 30. Apr 2006 13:55

Re: FindComponent auch für property ???
 
Ha, wenn du mal in der Hilfe zu default schaust steht da:

Zitat:

default und nodefault werden nur für Ordinal- und Mengentypen unterstützt
Ergo. Gibts für Strings keinen Default wert.

Martin K 30. Apr 2006 14:00

Re: FindComponent auch für property ???
 
Okay, der normale Default-Wert eines Strings ist ja eigentlich auch immer '' (leerer String).

Wenn man mal in der dfm-Datei eines Projekts ein wenig rumspielt und hier ein paar Zeilen, wo irgendwelche Strings stehen einfach löscht (z.B.: Caption = 'Form1') - wenn man dann das Projekt in Delphi lädt wird man feststellen, dass an dieser Stelle überall leere Strings stehen.
Ergo: Der Default-String ist immer ''

Aber was ist dann mit -2147483648 ???
Ist das irgendwie der Integer-Wert eines leeren Strings?

jfheins 30. Apr 2006 14:01

Re: FindComponent auch für property ???
 
guck mal in die hilfe zu [oh]nodefault[/oh] ;)

Zitat:

Mithilfe des Bezeichners nodefault kann ein geerbter default-Wert ohne Angabe eines neues Wertes außer Kraft gesetzt werden. Die Direktiven default und nodefault werden nur für Ordinal- und Mengentypen unterstützt, bei denen die Ober- und Untergrenze des Basistyps einen Ordinalwert zwischen 0 und 31 hat. Enthält eine Eigenschaftsdeklaration weder default noch nodefault, gilt sie als mit nodefault definiert. Für Real-, Zeiger- und String-Typen gilt der implizite default-Wert 0 bzw. nil und '' (leerer String).

Hinweis: Sie können den ordinalen Wert 2147483648 nicht als Standardwert verwenden. Dieser Wert wird intern für die Darstellung von nodefault verwendet.

Martin K 30. Apr 2006 14:08

Re: FindComponent auch für property ???
 
Aha.

Ich sollte wohl doch mal ab und zu wieder in die Hilfe schauen :wink:

Danke nochmal!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Seite 3 von 3     123   

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