AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dfm property streamen

Ein Thema von snook · begonnen am 23. Jan 2011 · letzter Beitrag vom 23. Jan 2011
Antwort Antwort
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#1

dfm property streamen

  Alt 23. Jan 2011, 21:36
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:
published
  property parameter: TStrings read GetParameter write SetParameter;
und hätte gerne etwas wie:
class function GetParameter: TStringList; viele grüße
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

AW: dfm property streamen

  Alt 23. Jan 2011, 21:58
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#3

AW: dfm property streamen

  Alt 23. Jan 2011, 22:31
oh war etwas verwirrend, was ich möchte ist

class function LoadParameter: TStringList 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.

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
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: dfm property streamen

  Alt 23. Jan 2011, 22:35
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#5

AW: dfm property streamen

  Alt 23. Jan 2011, 22:37
dem verständnis halber etwas code

Delphi-Quellcode:
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
...@ 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?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

AW: dfm property streamen

  Alt 23. Jan 2011, 22:42
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#7

AW: dfm property streamen

  Alt 23. Jan 2011, 23:02
bin also wieder bei TReader gelandet...hat jemand nen brauchbares tutorial dazu?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#8

AW: dfm property streamen

  Alt 23. Jan 2011, 23:34
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 (Bei Google suchenXN Ressource Editor), danach suchst du dir eine (aus dem Zweig RCData) aus. Dann nimmst du einen TRessourceStream und erzeugst ihn mittels .Create(hInst, 'NAME', RT_RCDATA); (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.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  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 03:55 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