![]() |
In-Process COM TFont kann nicht TFont zugewiesen werden
Hallo zusammen!
nach gescheiterten Versuchen den Aufbau eines Grids (QuantumGrid) in Packages auszulagern, dachte ich mir, ich könnte mich mal mit Com austoben. Vorab muß ich sagen, dass das Thema Com für mich gänzlich neu ist. Dlls geschrieben, registriert...alles wunderbar.... Nach dem Aufruf bzw der Zuweisung meines Objects zum Grid erhalte ich allerdings den Fehler "TFont kann nicht TFont zugewiesen werden". Sollte genau dies denn hier nicht Auftauchen da bei einem In-Process Server der selbe Adressraum wie die Exe verwendet wird? Bin ich mit meinem Ansatz komplett auf dem Holzweg? Grüße B. |
AW: In-Process COM TFont kann nicht TFont zugewiesen werden
Dein COM-Server und die Exe haben zwei getrennte Implementierungen der Klassenbibliothek.
TObject(COM) != TObject(Exe) und damit schlagen is/as-Abfragen fehl. |
AW: In-Process COM TFont kann nicht TFont zugewiesen werden
Darum wurden die Laufzeitpackages (BPL) erfunden,
diese teilen sich eine RTTI und somit haben sie überall den selben Typen. |
AW: In-Process COM TFont kann nicht TFont zugewiesen werden
Hi!
Danke für eure Antworten. Also komplett auf dem Holzweg mit meinem Ansatz.....:evil: Bei der Package Lösung kommt dann wieder mein Lizenz Problem aus vorigem Post in´s Spiel. Dann wird´s wohl doch darauf hinauslaufen, dass ich das ganze doch direkt mit in die Exe packe. Grüße B. |
AW: In-Process COM TFont kann nicht TFont zugewiesen werden
Hab nochmal ein bisschen in DP gestöbert und bin auf folgendes Thema gestoßen
![]() Zitat:
|
AW: In-Process COM TFont kann nicht TFont zugewiesen werden
Entscheidend ist, wie du deine Anwendung in Einzelstücke zerschneidest.
Dein Schnitt verläuft direkt durch die GUI wenn ich das richtig verstanden habe. Du möchtest QuantumGrid auslagern; da kann ich nur sagen "vergiss es". Wenn du durch die GUI schneiden möchtest, dann gibt es bei Delphi nur 2 Möglichkeiten: Packages und ActiveX-Controls. Packages hast du schon verworfen und ActiveX-Controls werden zu einem Drama, dass den Aufwand nicht lohnt. Das heisst jetzt aber nicht, dass du keine COM-DLLs verwenden sollst. Der Schnitt darf nur nicht durch die GUI verlaufen. Ein Beispiel: deine Anwendung soll EMails versenden können. Dann könnte man folgendes Interface deklarieren:
Delphi-Quellcode:
Dieses Interface und die COM DLL braucht keine GUI und funktioniert ohne Probleme.
ISendMail = interface(IDispatch) // etwas vereinfacht
['{XXXXXXXX-A104-4C06-999F-XXXXXXXXXXXX}'] procedure DoSendMail; safecall; procedure ClearAllRecipients; safecall; property FromAddr: WideString read Get_FromAddr write Set_FromAddr; property ToAddr: IStrings read Get_ToAddr; property CcAddr: IStrings read Get_CcAddr; property BccAddr: IStrings read Get_BccAddr; property MapiShowDialog: WordBool read Get_MapiShowDialog write Set_MapiShowDialog; property EMaildirectory: WideString read Get_EMaildirectory write Set_EMaildirectory; property SmtpHost: WideString read Get_SmtpHost write Set_SmtpHost; property SmtpUser: WideString read Get_SmtpUser write Set_SmtpUser; property SmtpPassword: WideString read Get_SmtpPassword write Set_SmtpPassword; property BodyText: WideString read Get_BodyText write Set_BodyText; property EMailMode: EnumEMailMode read Get_EMailMode write Set_EMailMode; property Subject: WideString read Get_Subject write Set_Subject; property ReplyTo: WideString read Get_ReplyTo write Set_ReplyTo; property Attachments: IAttachments read Get_Attachments; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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