AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi COM Server kann per VBScript nicht benützt werden
Thema durchsuchen
Ansicht
Themen-Optionen

COM Server kann per VBScript nicht benützt werden

Ein Thema von schwa226 · begonnen am 17. Feb 2009 · letzter Beitrag vom 17. Feb 2009
Antwort Antwort
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 12:28
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!?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 12:55
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.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#3

Re: COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 15:41
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)
Angehängte Dateien
Dateityp: zip test2_com_738.zip (271,7 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 16:05
Und das ganze funktioniert in einer VCL-Anwendung ohne das du die üblichen Funktionen exportierst?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 16:21
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
Angehängte Dateien
Dateityp: zip com_551.zip (305,4 KB, 6x aufgerufen)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6
  Alt 17. Feb 2009, 17:01
Ah, der "Out of Process Server" registriert sich selbst bei der ersten Verwendung.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#7

Re: COM Server kann per VBScript nicht benützt werden

  Alt 17. Feb 2009, 21:07
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?
  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 08:41 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