Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 18. Jan 2003, 15:15
Zitat von sakura:
Leider darf die Lösung nicht weitergegeben werden, da diese den auisdrücklich Lizenzbesdingungen von Borland unterliegt. D.h., diese muss von jedem manuell eingearbeitet werden. Der Aufwand liegt bei ca. 10 Minuten, sollte aber gemacht werden.
Mit dieser Lizenzbedingung ist gemeint, dass man die Classes.pas nicht weitergeben darf. Man könnte aber ein Patch schreiben, der das Einarbeiten des verbesserten Codes ohne die 10 Minuten schafft.
Für die Programmierer, die den Classes.pas Quellcode nicht haben (Personal Edition) oder die die Datei nicht verändern wollen, habe ich eine Unit geschrieben, die die Funktionen MakeObjectInstance und FreeObjectInstance hooked. Somit wird beim Aufruf von MakeObjectInstance automatisch die Funktion FixedMakeObjectInstance aufgerufen. Um dies zu ermöglichen, muss die Unit als aller erste (ShareMem ausgeschlossen) Unit im Projektquellcode eingebunden werden.


Da die beiden Funktionen bei Delphi 5 noch in der Forms.pas liegen wird ein Aufruf von MakeObjectInstance, der durch TApplication.Create ausgelöst wird, nicht von FixedMakeObjectInstance abgefangen. Weil aber Application bis zum Programmende besteht, und nur 1x erzeugt wird, ist das nicht weiter schlimm.


Zitat:
In Delphi 7 besteht der Fehler scheinbar noch immer Sämtliche Änderungen durch die angegebene Quelle fehlen...
Meine Unit dürfte auch unter Delphi 7 funktionieren.


Der Classes Patch wird so installiert:
Code:
patch Classes.pas Classes.pas.diff
Angehängte Dateien
Dateityp: zip MakeObjInstanceFix.zip (1,8 KB, 37x aufgerufen)
Dateityp: zip ClassesPatch.zip (36,6 KB, 40x aufgerufen)
  Mit Zitat antworten Zitat