Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute,

ich möchte das eine Funktion mit unterschiedlichen bzw. auch mit keinen Parametern aufgerufen werden kann. Ich weiss mittlerweile das ich irgendwie mit VARIANT arbeiten muss, weiss aber leider noch nicht so genau, wie ich damit arbeiten muss.

Meine Funktion sieht bis jetzt wie folgt aus:

VARIANT_BOOL CAnbindungKlickTelASCtrl::ConnectAddressServer(LONG lPort, LPCTSTR bstrIPAddress)

{

//CODE

}

und soll wie folgt aufgrufen werden können:

CAnbindungKlickTelASCtrl::ConnectAddressServer(Port, bstrIPAddress)

CAnbindungKlickTelASCtrl::ConnectAddressServer(lPort)

CAnbindungKlickTelASCtrl::ConnectAddressServer()

wenn ich meine Funktion mit beiden Parametern aufrufe, ist dies kein Problem, sobald ich einen Parameter weglasse, knallt es.

Gruß aus Hanau

Patrick

Geschrieben
Hallo Leute,

ich möchte das eine Funktion mit unterschiedlichen bzw. auch mit keinen Parametern aufgerufen werden kann. Ich weiss mittlerweile das ich irgendwie mit VARIANT arbeiten muss, weiss aber leider noch nicht so genau, wie ich damit arbeiten muss.

warum ??

und soll wie folgt aufgrufen werden können:

CAnbindungKlickTelASCtrl::ConnectAddressServer(Port, bstrIPAddress)

CAnbindungKlickTelASCtrl::ConnectAddressServer(lPort)

CAnbindungKlickTelASCtrl::ConnectAddressServer()

Patrick

ja dann deklariere die einfach im Heder etwa so:


ConnectAddressServer(datentyp Port,datentyp bstrIPAddress);

ConnectAddressServer(datentyp lPort);

ConnectAddressServer();


Geschrieben
warum ??

Weil es sein kann, dass der Benutzer die Daten für die Verbindung hat oder nicht. Wenn nicht, werden standardwerte genommen.

Eine angabe in der Klasse hat leider nicht funktioniert. Ich hatte vergessen anzugeben, dass das ganze eine ActiveX Komponente ist, daher muss dies auch in der IDL-Datei hinterlegt werden.

Gruß aus Hanau

Patrick

Geschrieben
Weil es sein kann, dass der Benutzer die Daten für die Verbindung hat oder nicht. Wenn nicht, werden standardwerte genommen.
Dann brauchst du nur eine Funktion. Gib einfach in der Funktionsdeklaration die Standardwerte an:

ConnectAddressServer(datentyp Port = 4711, datentyp bstrIPAddress = L"127.0.0.1");

Geschrieben
Dann brauchst du nur eine Funktion. Gib einfach in der Funktionsdeklaration die Standardwerte an:

ConnectAddressServer(datentyp Port = 4711, datentyp bstrIPAddress = L"127.0.0.1");

Das habe ich probiert, wenn ich versuche ein VB-Script auszuführen, bekomme ich die Fehlermeldung: "Das Argument ist nicht Optional".

Gruß aus Hanau

Patrick

Geschrieben
Das habe ich probiert, wenn ich versuche ein VB-Script auszuführen, bekomme ich die Fehlermeldung: "Das Argument ist nicht Optional".

VB-Script? Du schreibst einen COM-Server?

Warum sagst du das nicht vorher? :rolleyes:

IDL oder attributiert?

P.S.: Verschoben nach C++: Compiler, IDEs, APIs

Geschrieben

Ich habe das jetzt wie folgt aufgebaut:

[id(1), helpstring("method ConnectAddressServer")]		VARIANT_BOOL ConnectAddressServer([in, defaultvalue(5000)] LONG Port, [in, defaultvalue("")] BSTR IPAddress);

Ich bekomme aber immer noch die Fehlermeldung: "Das Argument ist nicht Optional".

Habe ich etwas falsch eingetragen oder habe ich etwas vergessen?

Gruß aus Hanau

Patrick

Geschrieben

Also meiner Meinung nach muss die Methode so aussehen:

[id(1), helpstring("method ConnectAddressServer")] HRESULT ConnectAddressServer([in, defaultvalue(5000)] LONG Port, [in, defaultvalue("")] BSTR IPAddress, [out, retval] VARIANT_BOOL* pRet);

Damit klappt bei mir ein Aufruf aus VBScript ohne Parameter.

Geschrieben
Bei mit mekert das VB-Script immer noch dies als Fehler an.
Immer noch? Was hast du denn geändert?

Muss ich vielleicht an einer anderen Stelle noch etwas deklarieren (Funktion, Klasse usw.)?
Nein, eigentlich nicht. Wenn du willst, kannst du mir das Projekt per Mail schicken, dann kann ich es mir mal ansehen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...