![]() |
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 |
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 |
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. |
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ß |
Re: unbekannte Eigenschaften zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab die lösung!!!
Code:
siehe auch im programm.
function Get_Method(Proc : Pointer) : TMethod;
begin result.Code := Proc; result.Data := nil; end; p.PropertyList['event'].MethodValue := Get_Method(@TMyObj.Test); 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 21:21 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 by Thomas Breitkreuz