Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi unbekannte Eigenschaften zur Laufzeit ändern (https://www.delphipraxis.net/28371-unbekannte-eigenschaften-zur-laufzeit-aendern.html)

Dezipaitor 23. Aug 2004 22:25


unbekannte Eigenschaften zur Laufzeit ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi

ich habe hier eine kleine Demo, die unter Delphi 5 und Delphi 7
die Eigenschaften einer beliebigen Klasse ändern sollte, ohne
dass man direkt auf die Eigenschaften zugreift.

Das würde ich gerne für andere Delphiversionen auch funktionsfähig machen.

Also:
Einfach mal das Prog runterladen und kompilieren und sehen was passiert.
Hier mit deiner Delphiversion posten.

Das Problem besteht darin, dass von einer Delphiversion zur anderen die Unit "typeinfo.pas" sich geändert hat. Da muss man unterscheiden.

Irgendwelche Vorschläge - heiße auch gerne konstruktive Verbesserungen willkommen -> sprich additions im Quelltext.


Also mal sehen, wie das ankommt...

thx

Erichgue 25. Aug 2004 10:43

Re: unbekannte Eigenschaften zur Laufzeit ändern
 
Hallo,
wenn es um die Unterscheidung der Delphi versionen geht, kann ich dir hiermit aushelfen:
Delphi definiert Symbold, die die akteuelle Version kennzeichnet

Abfragen kannst du diese wie folgt:

{$IFDEF VER120} { Delphi 4 }
{$DEFINE DELPHI_4_OR_HIGHER}
{$DEFINE DELPHI_4}
{$ENDIF}

{$IFDEF VER125} { C++ Builder 4 }
{$DEFINE DELPHI_4_OR_HIGHER}
{$DEFINE DELPHI_4}
{$ENDIF}

{$IFDEF VER130} { Delphi 5 and C++ Builder 5 }
{$DEFINE DELPHI_4_OR_HIGHER}
{$DEFINE DELPHI_5_OR_HIGHER}
{$DEFINE DELPHI_5}
{$ENDIF}

{$IFDEF VER140} { Delphi 6 }
{$DEFINE DELPHI_4_OR_HIGHER}
{$DEFINE DELPHI_5_OR_HIGHER}
{$DEFINE DELPHI_6_OR_HIGHER}
{$DEFINE DELPHI_6}
{$ENDIF}

{$IFDEF VER150} { Delphi 7 }
{$DEFINE DELPHI_4_OR_HIGHER}
{$DEFINE DELPHI_5_OR_HIGHER}
{$DEFINE DELPHI_6_OR_HIGHER}
{$DEFINE DELPHI_7_OR_HIGHER}
{$DEFINE DELPHI_7}
{$ENDIF}


Im Quellcode dann wie folgt abfragen:
(Zum Beispiel nach Delphi 5

{$IFDEF DELPHI_5_OR_HIGHER} // Delphi 6.0
ShowMessage(''Delphi 5 oder höher')
{$Else}
ShowMessage('nicht Delphi 5')
{$EndIf}

Also, je nach Delphi-Version musst du dann deine Anweisung die die TypInfo betreffen abändern

Dezipaitor 25. Aug 2004 11:33

Re: unbekannte Eigenschaften zur Laufzeit ändern
 
THX

nein es geht nicht um die Präprozessoranweisungen.
Wie kommst du denn darauf?
Das steht doch schon drin. Besonders, da es wichtig ist alle Delphiversionen unterschiedlich zu behandeln, weil sie unterschiedliche Versionen von TypInfo.pas besitzen. Ich kann nicht bei Delphi 7 ausgehen, dass ich auch Delphi 5 Konstrukte verwenden kann - da sich einige Parameter geändert haben.


Hast du das Programm mal kompiliert - es sollte ein Fehler im Hauptprogramm angezeigt werden - Das ist das Problem.

Erichgue 25. Aug 2004 12:11

Re: unbekannte Eigenschaften zur Laufzeit ändern
 
Hallo,
na da hab ich ja mit meinen Delphi-Versions-Vergleich daneben gegriffen.

Nun gut, in Delphi 5 und 7 läßt sich dein Programm bei mir ohne Fehler kompelieren und starten!

Gruß

Dezipaitor 25. Aug 2004 23:12

Re: unbekannte Eigenschaften zur Laufzeit ändern
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab die lösung!!!

Code:
function Get_Method(Proc : Pointer) : TMethod;
begin
  result.Code := Proc;
  result.Data := nil;
end;
p.PropertyList['event'].MethodValue := Get_Method(@TMyObj.Test);
siehe auch im programm.


Also damit kann man die Eigenschaften ändern, ohne direkt auf die Eigenschaften zugreifen zu müssen. Man ändert sie über ihre Namen als String.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 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