![]() |
dfm property streamen
abend,
ich habe jetzt ewiglkeiten gesucht...wohl unter den falschen stichwörtern, also nciht aufschreien, bin mir sihcer das wurde schon tausend mal erklärt... ich möchte eine published property einer komponente aus der dfm des zugehörigen formulars auslesen, ohne das formular zu erstellen! wie geht das???? stichwörter die ich gefundne habe: TFiler, TReader, aber ihc blicke nicht durch! ich habe:
Delphi-Quellcode:
und hätte gerne etwas wie:
published
property parameter: TStrings read GetParameter write SetParameter;
Delphi-Quellcode:
viele grüße
class function GetParameter: TStringList;
|
AW: dfm property streamen
Willst du jetzt die DFM-Datei im Klartext über das Netzwerk senden? ODER willst du Getter- und Setter-Methoden einer Property mit Namen haben? Letzteres ist leider nicht möglich.
Außerdem wird es mit zugewiesenen Werten sehr schwer, wenn das Objekt zu der Klasse nicht existiert. Bernhard |
AW: dfm property streamen
oh war etwas verwirrend, was ich möchte ist
Delphi-Quellcode:
sodass ich über die Klassenfunktion zur laufzeit die werte der property Parameter (die ja in der dfm stehen) laden kann, ohne die klasse erst instanzieren zu müssen.
class function LoadParameter: TStringList
ich mein, im prinzip ist es bei gegebener datenstruktur von aussen recht simpel einfach die dfm als textdatei einzulesen und dann die werte der property zu suchen und zu lesen...ABER ich weiß ja nicht WO die dfm liegt! daher dachtr ich, ich löse das ganze komponentenseitig, denn die komponente, bzw das formular auf dem die komponente liegt, kennt ja ihre eigene dfm |
AW: dfm property streamen
Also das geht nicht. Die Werte werden ja erst zugewiesen, nachdem das Objekt existiert. Also erst Objekt erstellen und dann lädt das Objekt seine Eigenschaften.
Was jetzt möglich ist: Du übergibst die Klasse des Objektes. Mit Hilfe der RTTI kannst du dann aus der Klasse den Klassennamen (als String) erhalten. Daraus kannst du den Ressourcennamen berechnen (die Delphi-VCL muss ja so etwas ähnliches machen). Jetzt musst du nur noch die Ressource parsen. Dann hast du es. Bernhard |
AW: dfm property streamen
dem verständnis halber etwas code
Delphi-Quellcode:
...@ bernhard, danke, aber DAS mit dem ressourcen ladne ist ja genau was ich machen will, aber ich blicke bei den gefundenen erklärungen einfach nciht durch...vielleicht nen link für ein gutes tut?
type
TParameterList = class(TComponent) // <-- registrierte Komponente private FValues: TStringList; . . . published property Parameter: TStrings read GetParameter write SetParameter; type Form1 = class(TForm) ParameterLis: TParameterList; public class function LoadParameter: TStringList; // <-- hier soll jetzt aus der Komp ParameterList die "gestreamte?" property Parameter geladen werden |
AW: dfm property streamen
Dann mach dich mal mit RessourceStreams vertraut. Außerdem solltest du die Quelltexte der Delphi-VCL haben und kannst dir mal anschauen, was passiert, wenn du TForm.Create() aufrufst und was in TForm.AfterConstruction(); steht.
Bernhard |
AW: dfm property streamen
bin also wieder bei TReader gelandet...hat jemand nen brauchbares tutorial dazu?
|
AW: dfm property streamen
So wie ich das verstehe, ist Treader nur ein Caching-Aufsatz für den normalen Delphi-TStream. Fang doch mal ganz einfach an: Schau dir an, welche Ressourcen deine EXE hat (
![]()
Delphi-Quellcode:
(Parameter musst du nachschlagen). Dann kopierst du das ganze in einen TFileStream und hast schon mal die Ressourcen auf der Platte. Dann kannst du weiter machen.
.Create(hInst, 'NAME', RT_RCDATA);
Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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