AGB  ·  Datenschutz  ·  Impressum  







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

Type-Problem

Offene Frage von "Timelesk"
Ein Thema von Igotcha · begonnen am 16. Mär 2005 · letzter Beitrag vom 18. Nov 2006
 
Timelesk

Registriert seit: 24. Jul 2004
72 Beiträge
 
#15

Re: Type-Problem

  Alt 17. Nov 2006, 16:52
Hallo Hagen,

danke für deine Antwort.

Zitat von negaH:
1.) direkte Auswertung in den Getter/Setter Methoden der übergebenen Parameter. Das ist das was du in deiner .SetParam() Methode mit Label1.Caption := Data; gemacht hast. Du wertest den Parameter Index/Name garnicht selektiv aus.
Hier habe ich der property "test" die Caption von Button1 zugewiesen, also doch Weg 2 mit Properties gewählt.

Hier mal meine beiden Funktionen:
Delphi-Quellcode:
{Lade übergebene Variable}
function TModulForm.GetParam(const Name: String): Variant;
begin
  Result := TypInfo.GetVariantProp(Self, Name);
end;

{Setze zu übergebende Variable}
procedure TModulForm.SetParam(const Name: String;const Data: Variant);
begin
  TypInfo.SetVariantProp(Self, Name, Data);
end;
Zitat von negaH:
DU hast also in deine Methode .GetParam() die Methode 2. gewählt ohne jedoch eine Property "Test" zu deklarieren. Im Setter .SetParam() wählst du Methode 1. und damit mischt du zwei grunverschiedene Implementierungswege. Die übrigens nur ein Vorschlag meinerseits waren.
Ich habe gemerkt, dass ich die Property "test" wirklich nicht gesetzt hatte.
Nun funktioniert das soweit mit Zahlen und Boolschen Properties.
Aber bei Strings gibt mir Delphi beim Beenden des Programmes eine Zugriffsverletzung aus.

1. In der MainForm (Anker-Unit) rufe ich nach dem erstellen des Formulars des Moduls diesen Code auf: modul1.SetParam('VarString', 'Stringübergabe');
2. Im Modul ist das ganze so deklariert:
Delphi-Quellcode:
  TModulForm1 = class(TModulForm)
  protected
    function GetParam(const Name: String): Variant; override;
    procedure SetParam(const Name: String;const Data: Variant); override;
  private
    //Deklarierung der Parameter für GetParam und SetParam
    FVarString : String;
  published
    //Deklarierung der Parameter für GetParam und SetParam

    property VarString : String read FVarString write FVarString;
  end;

{...}

function TModulForm1.GetParam(const Name: String): Variant;
begin
  Result := inherited GetParam(Name);
end;

procedure TModulForm1.SetParam(const Name: String;const Data: Variant);
begin
  // da wir das schon in der Basisklasse getan haben also einfach
  inherited SetParam(Name, Data);
end;

{...}

//Aufruf erfolgt per Button in ein Label
bfAusgabe.Caption := GetParam('VarString');
Ich sehe dort keinen Fehler und trotzdem kommt eine EAccessViolation in module rtl100.bpl
Kommt aber nur, sofern ich SetParam ausgeführt habe! Wenn ich nur GetParam ausführe und das Programm beende, kommt keine Fehlermeldung.


Desweiteren bin ich noch am tüfteln, wie ich z.B. per Button im Modul die Caption des Moduls ändere.
Man könnte Caption := 'Neuer Modultitel'; schreiben, aber wie kann ich das über den Modulnamen + Caption machen (in Form von Modulname.Caption) ?


Vielen Dank für die Hilfe

gruß
Timelesk
  Mit Zitat antworten Zitat
 


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 22:14 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