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 Server kann per VBScript nicht benützt werden (https://www.delphipraxis.net/129341-com-server-kann-per-vbscript-nicht-benuetzt-werden.html)

schwa226 17. Feb 2009 12:28


COM Server kann per VBScript nicht benützt werden
 
Hi,

ich habe ein kleines Testprogramm geschrieben, dass z.B. die Methode:
Delphi-Quellcode:
function TTest1.Add(zahl1, zahl2: Integer): Integer;
begin

Result := zahl1 + zahl2;

end;
hat.

Nun möchte ich per VBScript diesen COM Server mit der Funktion Add benutzen. Jedoch klappt das überhaupt nicht!

VBScript:
Code:
Option Explicit

Dim ComObj
Dim Ergebnis


Err.Clear: Set ComObj= GetObject(, "Project1.Test1")


If Err.Number = 424 Or Err.Number = 429 Then

Set ComObj = CreateObject("Project1.Test1")

End If

Ergebnis = ComObj.Add(4,4)
Weis nicht mehr weiter warum das nicht funktioniert!

Kann da jemand helfen!?

sirius 17. Feb 2009 12:55

Re: COM Server kann per VBScript nicht benützt werden
 
Du mischst eine VCL-formularanwendung mit einer COM-Bibliothek?

Du musst eine Bibliothek erstellen (DLL) und diese registrieren.

Edit: Datei > Neu > ActiveX-Bibliothek

Edit2: Anscheinend willst du die "Späte Bindung" einsetzen, dann musst du anstatt einem COM-Objekt ein Automatisierungsobjekt in der ActiveX-Bibliothek anlegen.

schwa226 17. Feb 2009 15:41

Re: COM Server kann per VBScript nicht benützt werden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Super Danke!

Mit einem Automatisierungsobjekt funktioniert es sofort!

VBScript:
Code:
Option Explicit

Dim ComObj
Dim Ergebnis


Err.Clear: Set ComObj= GetObject(, "Project1.Test2")


If Err.Number = 424 Or Err.Number = 429 Then

Set ComObj = CreateObject("Project1.Test2")

End If

Ergebnis = ComObj.Add(4,4)

sirius 17. Feb 2009 16:05

Re: COM Server kann per VBScript nicht benützt werden
 
:gruebel: Und das ganze funktioniert in einer VCL-Anwendung ohne das du die üblichen Funktionen exportierst?

stoxx 17. Feb 2009 16:21

Re: COM Server kann per VBScript nicht benützt werden
 
Liste der Anhänge anzeigen (Anzahl: 1)
ist der COM Server registriert?

probier mal die COM Beispiele im Anhang. ist aus dem Buch "Delphi6 für Profis"
Vielleicht klappt das dann ..

hab das Buch sogar im Netz gefunden, die letzten Kapitel über COM fehlen da wohl aber. Das Buch ist aber vergriffen ...

http://www.ansatheus.de/_at_dokserve...hi/delphi6.pdf

sirius 17. Feb 2009 17:01

Ah, der "Out of Process Server" registriert sich selbst bei der ersten Verwendung.

schwa226 17. Feb 2009 21:07

Re: COM Server kann per VBScript nicht benützt werden
 
Habe nun noch folgendes Problem:

Wenn das Script aufrufe:
Code:
Dim Obj
Dim Ergebnis

If IsRunning Then

   Set Obj = CreateObject("Project1.Test2")
   
   Ergebnis = Obj.Add(3, 4)
            
End If

Function IsRunning
   
   On Error Resume Next

    Err.Clear: Set ComObj = GetObject(, "Project1.Test2")
   
   
    If Err.Number = 424 Or Err.Number = 429 Then
        IsRunning= False
    Else
        IsRunning=True
    End If
   

End Function
Dann funktioniert es genau ein mal! Beim zweiten mal Ist die Err.Number nicht mehr 0 und das Script wird beendet.
Stoppe ich nun meine Project1.exe und starte sie wieder neu geht es wieder ein mal.

Habe ich da in der COM Definition noch was falsch das das Script nur ein mal ein Object zuweisen kann?


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