Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Komponenten ansicht in DLL verschluckt (https://www.delphipraxis.net/167519-komponenten-ansicht-dll-verschluckt.html)

EWeiss 3. Apr 2012 14:24

Komponenten ansicht in DLL verschluckt
 
Bei der übergabe der Form an DLL werden im Tip beim drüberfahren mit der Maus auf Form1 noch alle Komponente richtig angezeigt.

Delphi-Quellcode:
C.SetComboParentObj(Form1);


Fahre ich jedoch innerhalb der DLL mit der Maus auf ParentObj fehlen alle Komponente bzw. sind nicht sichbar.

Delphi-Quellcode:
procedure THookedCombo.SetComboParentObj(ParentObj: TWinControl);
begin

  FParentObj := ParentObj;
end;
Prüfe ich jedoch in der DLL auf die Komponente werden sie gefunden.

Delphi-Quellcode:
    GetClassName(CtrlObj.Handle, @Buffer, MAX_PATH);
    sCtrl := Buffer;
    if sCtrl = 'TComboBox' then
Liegt hier ein Problem mit den Tip's vor ?

Aber auch in den Überwachten Lokalen Variablen werden die Komponente nicht angezeigt.

wo liegt das problem?

gruss

Bernhard Geyer 3. Apr 2012 14:26

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Zitat von EWeiss (Beitrag 1159978)
Bei der übergabe der Form an DLL werden ...

Grundfrage: Verwendest du Runtimepackages?

EWeiss 3. Apr 2012 14:34

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1159979)
Zitat:

Zitat von EWeiss (Beitrag 1159978)
Bei der übergabe der Form an DLL werden ...

Grundfrage: Verwendest du Runtimepackages?

EDIT:
oops sorry du meinst unter Komponente Laufzeit Packages verwenden.
Nein.

gruss

himitsu 3. Apr 2012 14:53

AW: Komponenten ansicht in DLL verschluckt
 
Debuggst du die DLL oder die EXE?

Das ist aber ein "normales" Verhalten von Delphi (leider).
Ich kämpfe mich hier beim Debuggen gleichzeitig quer durch mehrere Laufzeitpackages und DLLs und da kann Delphi oftmals auch nichts auflösen,
weil es scheinbar nicht die passenden Debugginfos dem aktuellen Modul zuordnen kann. :cry:

EWeiss 3. Apr 2012 15:00

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Zitat von himitsu (Beitrag 1159986)
Debuggst du die DLL oder die EXE?

Das ist aber ein "normales" Verhalten von Delphi (leider).
Ich kämpfe mich hier beim Debuggen quer durch mehrere Laufzeitpackages und DLLs und da kann Delphi oftmals auch nichts auflösen. :cry:

Als auch..

Du hattest mir ja mal eine berichtigung geschrieben im Thread CTRL_HOOK um die Komponenten zu übergeben.
Habe das mal eingebaut weil ich die DLL um OptionButton erweitern wollte. (Vorausgesetzt bekomme das problem mit den Speicherlecks im griff).

Mein Problem ist das beim beenden ein Invalid Pointer ausgegeben wird wo ich nicht feststellen kann
woher dieser kommt da beim Debuggen in den Lokalen Variablen schon die Komponente nicht sichtbar sind
war meine Vermutung dahingehend das mein problem von dem ausgeht.

gruss

guinnes 3. Apr 2012 15:07

AW: Komponenten ansicht in DLL verschluckt
 
Ohne verwendung von Laufzeit-Packages sowohl in der Dll als auch in der Exe hat die Dll eine andere Version des Object-Baumes ( Die VMT's stehen dann sowohl in der Dll als auch im Hauptprogramm ). Übergreifend Objekte austauschen ist da nicht ( Zumindest bis Delphi 5 )

EWeiss 3. Apr 2012 15:10

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Zitat von guinnes (Beitrag 1159992)
Ohne verwendung von Laufzeit-Packages sowohl in der Dll als auch in der Exe hat die Dll eine andere Version des Object-Baumes ( Die VMT's stehen dann sowohl in der Dll als auch im Hauptprogramm ). Übergreifend Objekte austauschen ist da nicht ( Zumindest bis Delphi 5 )

Macht keinen Unterschied ob mit oder ohne.
Hab es dahingehend schon versucht.
Die Hierarchie der Form1 ist Korrekt innerhalb Main (Traurig wenn es nicht so wäre)
Aber nach der Übergabe in der DLL nicht mehr.

Aber wie gesagt obwohl nicht in den Lokalen Variablen angezeigt werden die Komponenten gefunden.

EDIT:
Menu: Komponente/Packags Installieren/ option Laufzeit Packages verwenden aktivieren...
Wird ja dann automatisch für die EXE und der DLL verwendet bzw.. für alles neuen Projekt wenn diese option aktiviert wird.

Aber wie gesagt ändert nichts am aktuellen Zustand.

gruss

Bernhard Geyer 3. Apr 2012 15:44

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Zitat von EWeiss (Beitrag 1159994)
EDIT:
Menu: Komponente/Packags Installieren/ option Laufzeit Packages verwenden aktivieren...

Kompletter Rebuild nötig. Sonst ist das nicht.

Zitat:

Zitat von EWeiss (Beitrag 1159994)
Wird ja dann automatisch für die EXE und der DLL verwendet bzw.. für alles neuen Projekt wenn diese option aktiviert wird.

Du musst da für alle Exes und DLLs gesondert aktivieren.


Zitat:

Zitat von EWeiss (Beitrag 1159994)
Aber wie gesagt ändert nichts am aktuellen Zustand.

Ohne Runtimepackages wäre es ein Wunder wenn da irgendwas funktionierten würde (dürfte normalerweise was mit TFont kann nicht TFont zugewiesen werden des öfteren auftauchen. Siehe Beitrag guinnes

EWeiss 3. Apr 2012 16:03

AW: Komponenten ansicht in DLL verschluckt
 
Zitat:

Du musst da für alle Exes und DLLs gesondert aktivieren.
Jup unter Projekt Option/Packages.

Habe es gemacht aber abgesehen davon das nun jedemenge Speicherlecks in den Laufzeit_Units entdeckt wurden
hat sich da nichts getan.

Zitat:

500071FA [System.pas][System][System.@GetMem][2979]
50009D0F [System.pas][System][System.TObject.NewInstance][9433]
5000A3B2 [System.pas][System][System.@ClassCreate][10277]
50298F87 [Controls.pas][Controls][Controls.TWinControl.GetControl][8943]
502BE38F [Forms.pas][Forms][Forms.TCustomForm.DoCreate][3319]
502BDFCB [Forms.pas][Forms][Forms.TCustomForm.AfterConstruction][3203]
5000A420 [System.pas][System][System.@AfterConstruction][10325]
Zitat:

50007216 [System.pas][System][System.@FreeMem][3030]
50009D2D [System.pas][System][System.TObject.FreeInstance][9439]
5000A3FD [System.pas][System][System.@ClassDestroy][10318]
50063CE9 [Classes.pas][Classes][Classes.TList.Destroy][3337]
50009D73 [System.pas][System][System.TObject.Free][9458]
500626E3 [Classes.pas][Classes][Classes.TClassFinder.Destroy][2650]
50009D73 [System.pas][System][System.TObject.Free][9458]
5006C373 [Classes.pas][Classes][Classes.TReader.ReadRootComponent][7780]
50068697 [Classes.pas][Classes][Classes.TStream.ReadComponent][5946]
5006336C [Classes.pas][Classes][Classes.InternalReadComponentRes][3040]
500634DC [Classes.pas][Classes][Classes.InitComponent][3097]


gruss

guinnes 3. Apr 2012 17:43

AW: Komponenten ansicht in DLL verschluckt
 
Du hast auch die Runtime-Packages genau da, wo sie gesucht werden ?
Du hast auch die Runtime-Packages aktiviert, die benötigt werden ? Nicht nur einfach "Mit Runtime-Packages " sondern auch die Packages, die deine eigenen Klassen enthalten, die du in Dll und Exe brauchst ?
Und hast Dll und Exe mittels Projekt erzeugen neu erzeugt ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 Uhr.
Seite 1 von 2  1 2      

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