AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE In-Process COM TFont kann nicht TFont zugewiesen werden
Thema durchsuchen
Ansicht
Themen-Optionen

In-Process COM TFont kann nicht TFont zugewiesen werden

Ein Thema von Boppe · begonnen am 13. Mai 2011 · letzter Beitrag vom 13. Mai 2011
Antwort Antwort
Boppe

Registriert seit: 28. Feb 2007
Ort: München
39 Beiträge
 
Delphi 2007 Professional
 
#1

In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 14:15
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.

Geändert von Boppe (13. Mai 2011 um 14:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 14:39
Dein COM-Server und die Exe haben zwei getrennte Implementierungen der Klassenbibliothek.
TObject(COM) != TObject(Exe) und damit schlagen is/as-Abfragen fehl.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#3

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 14:41
Darum wurden die Laufzeitpackages (BPL) erfunden,
diese teilen sich eine RTTI und somit haben sie überall den selben Typen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Boppe

Registriert seit: 28. Feb 2007
Ort: München
39 Beiträge
 
Delphi 2007 Professional
 
#4

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 15:42
Hi!
Danke für eure Antworten.

Also komplett auf dem Holzweg mit meinem Ansatz.....

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.
  Mit Zitat antworten Zitat
Boppe

Registriert seit: 28. Feb 2007
Ort: München
39 Beiträge
 
Delphi 2007 Professional
 
#5

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 16:03
Hab nochmal ein bisschen in DP gestöbert und bin auf folgendes Thema gestoßen DP

Zitat:
..Der obige Ansatz über IUnknown und COM Interfaces zu gehen ist dagegen richtig in diesem Falle.
...
Also bin ich doch nicht so ganz auf dem Holzweg. Aber kann mir jemand sagen wie ich das realisieren kann?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 16:26
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:
  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;
Dieses Interface und die COM DLL braucht keine GUI und funktioniert ohne Probleme.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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