Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi COM und ein redefiniertes GetServer (https://www.delphipraxis.net/112231-com-und-ein-redefiniertes-getserver.html)

Sherlock 17. Apr 2008 09:19


COM und ein redefiniertes GetServer
 
Hi zusammen,

ich versuche gerade COM Objekte (LeadTools) in Delphi7 als Komponenten einzubinden. Klaglos erzeugt Delphi zunächst die Wrapper, wenn ich dann aber mal die neuen Komponenten kompilieren will erhalte ich eine Fehlermeldung, weil in der Wrapperunit ein GetServer (TOleServer) eingesetzt werden soll (was ja auch normal ist). Dieses GetServer ist aber auch eine von den LeadTools eingeführte Methode, die leider gänzlich andere Parameter erwartet. :evil:

Der Compiler bricht dann ab, und ich bin angeschmiert, weil ich jetzt die ganze Eventbehandlung von Hand abwickeln müsste.

Wie bringe ich den Wrapper dazu zu bemerken, daß er was falsch gemacht hat, oder wie korrigiere ich das Problem...

Delphi-Quellcode:
// Automatisch erzeugte Routine für die Komponente
procedure TLEADDicomNet.Connect;
var
  punk: IUnknown;
begin
  if FIntf = nil then
  begin
    punk := GetServer; // Das Problem
    ConnectEvents(punk);
    Fintf:= punk as ILEADDicomNet;
  end;
end;
Sherlock

DeddyH 17. Apr 2008 10:51

Re: COM und ein redefiniertes GetServer
 
Versuch es doch mal mit
Delphi-Quellcode:
punk := Unitname.GetServer;
Beziehungsweise, wenn es eine Methode ist, mit
Delphi-Quellcode:
punk := Klassenname.GetServer;
Und wenn es eine Methode von TLEADDicomNet sein sollte:
Delphi-Quellcode:
punk := self.GetServer;
Mehr Möglichkeiten fallen mir spontan nicht mehr ein :)

Sherlock 17. Apr 2008 12:46

Re: COM und ein redefiniertes GetServer
 
Hmm, das Problem ist, daß GetServer eine Methode der Klasse TOleServer der Unit OleServer ist. Ich weiss zu diesem Zeitpunkt nicht den Namen des Objekts... Klassenname.Methode funktioniert nicht.

Ich habe mal
Delphi-Quellcode:
punk := TOleServer(Self).GetServer
probiert, aber das geht nicht.

Sherlock

DeddyH 17. Apr 2008 12:54

Re: COM und ein redefiniertes GetServer
 
Ist TLEADDicomNet ein Nachfahre von TOLEServer?

Sherlock 17. Apr 2008 13:03

Re: COM und ein redefiniertes GetServer
 
Jawoll, die deklaration, die der Wrapper macht sieht so aus:

Delphi-Quellcode:
TLEADDicomNet = class(TOleServer)
Ich denke, da kommt auch jetzt das Problem, denn in der Klassendefinition deklariert er halt ein eigenes GetServer, das das TOleServer.GetServer, ausblendet.

Sherlock

DeddyH 17. Apr 2008 13:05

Re: COM und ein redefiniertes GetServer
 
Und self.GetServer nimmt er auch nicht?

Sherlock 17. Apr 2008 13:12

Re: COM und ein redefiniertes GetServer
 
Ne, geht nicht, aber ich habs:

Delphi-Quellcode:
punk := inherited GetServer;
:D

Sherlock

nicodex 17. Apr 2008 13:14

Re: COM und ein redefiniertes GetServer
 
Zitat:

Zitat von Sherlock
Ich denke, da kommt auch jetzt das Problem, denn in der Klassendefinition deklariert er halt ein eigenes GetServer, das das TOleServer.GetServer, ausblendet.

Dann würde ich die GetServer der generierten Klasse manuell umbenennen (GetServer_ oder im C++/IDL-Stil get_Server).


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 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