COMatePLUS Schreibweise
COMatePLUS Schreibweise
Ich habe mal eine Frage, warum die Schreibweise der Schnittstelle über die COMate so kompliziert ist. In AutoIT und und Lazarus werden die Objekte in Ihren Aufruf durch einfache Punkte getrennt "Excel.WorkBooks.Add". Gerade beim Aufruf von GetObjectProperty mit x Klammern und '"' komme ich schnell durcheinander und der Code ist nicht so gut lesbar. Gibt es dazu in PB noch eine Alternative, neben dem DLL Aufruf der Applikation?
Danke für Tips
Danke für Tips
Re: COMatePLUS Schreibweise
Wie bitte?
Ansonsten kannst du mit Makros quasi deine eigene Programmiersprache mit PureBasic entwickeln (gibt einige schöne Beispiele hier im Forum).
Der Punkt-Operator ist in PureBasic der Indikator für einen anschließenden Datentyp, soll heißen so eine Schreibweise kriegst du in PB wohl nicht hin.
Ansonsten kannst du mit Makros quasi deine eigene Programmiersprache mit PureBasic entwickeln (gibt einige schöne Beispiele hier im Forum).
Der Punkt-Operator ist in PureBasic der Indikator für einen anschließenden Datentyp, soll heißen so eine Schreibweise kriegst du in PB wohl nicht hin.
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
COMatePLUS Schreibweise
Macht es ein Makro in der Übersicht leichter. Ich habe damit noch nie gearbeitet? Ich schaue mir das mal an, danke für den Tip.
Re: COMatePLUS Schreibweise
wenn Du wüsstest, wie kompliziert das ganze ohne COMate ist...kunstlust hat geschrieben:Ich habe mal eine Frage, warum die Schreibweise der Schnittstelle über die COMate so kompliziert ist.

Grüße ... Kiffi
a²+b²=mc²
Re: COMatePLUS Schreibweise
Ich ahne es, aber ich würde mich über eine kurze Erläuterung freuenKiffi hat geschrieben:wenn Du wüsstest, wie kompliziert das ganze ohne COMate ist...kunstlust hat geschrieben:Ich habe mal eine Frage, warum die Schreibweise der Schnittstelle über die COMate so kompliziert ist.![]()
Grüße ... Kiffi

Re: COMatePLUS Schreibweise
Ich habe mir die Macrofunktion angeschaut, aber ich verstehe noch nicht wie ich eine String für meinen "Hersteller" in einem Befehl zurück bekomme. Schön wäre in meinem Beispiel das mir das snmpget auch gleich die Rückgabe der MIB als String zurückgibt, geht das mit überhaupt Macros?
Danke für Tips
Danke für Tips
Code: Alles auswählen
XIncludeFile "COMatePLUS.pbi"
InitNetwork()
Macro snmpget(IP,MIB)
objSNMP.COMateObject
objSNMP = COMate_CreateObject("OlePrn.OleSNMP")
If objSNMP
objSNMP\Invoke("Open('" + IP + "', 'public', 2,1000)")
hersteller.s= objSNMP\GetStringProperty("Get('"+MIB+"')")
EndIf
EndMacro
snmpget("192.168.110.147",".1.3.6.1.4.1.11.2.3.9.1.1.7.0")
Debug Hersteller; Dieser String sollte eigentlich gleich vom snmpget kommen....
Re: COMatePLUS Schreibweise
für eine kurze Erläuterung ist das Thema (zumindest für mich)kunstlust hat geschrieben:Ich ahne es, aber ich würde mich über eine kurze Erläuterung freuen
ein wenig zu komplex.
Aber lies zur Einführung mal das hier:
http://www.purebasic.fr/german/viewtopic.php?f=3&t=8126
Dieser Thread war IMO die Geburtsstunde von ComHelper und DispHelper, die den
Zugriff auf COM-Objekte erheblich vereinfachten. Später kam dann COMate, welches
noch einmal ein Stück komfortabler war.
Grüße ... Kiffi
a²+b²=mc²
Re: COMatePLUS Schreibweise
Ich danke dir für die Info Kiffi.Kiffi hat geschrieben:für eine kurze Erläuterung ist das Thema (zumindest für mich)kunstlust hat geschrieben:Ich ahne es, aber ich würde mich über eine kurze Erläuterung freuen
ein wenig zu komplex.
Code: Alles auswählen
XIncludeFile "COMatePLUS.pbi"
InitNetwork()
Procedure.s snmpget(IP,MIB)
objSNMP.COMateObject
objSNMP = COMate_CreateObject("OlePrn.OleSNMP")
If objSNMP
objSNMP\Invoke("Open('" + IP + "', 'public', 2,1000)")
ProcedureReturn objSNMP\GetStringProperty("Get('"+MIB+"')")
Else
ProcedureReturn "Fehler"
EndIf
EndProcedure
Debug snmpget("192.168.110.147",".1.3.6.1.4.1.11.2.3.9.1.1.7.0")
Ist es möglich in einer Prozedur String & Integer gemischt zu übergeben, ich bekomme bei gleichen auf wie bei Macro immer Fehler der Variablen,
muss ich zwei Prozeduren von machen? Oder gibt es da einen Trick?
Gruß Kunstlust
Re: COMatePLUS Schreibweise
Nun habe ich es doch selber hinbekommen, Handbuch lesen hilft oft...
Code: Alles auswählen
XIncludeFile "COMatePLUS.pbi"
InitNetwork()
Procedure.s snmpget(IP.s,MIB.s)
objSNMP.COMateObject
objSNMP = COMate_CreateObject("OlePrn.OleSNMP")
If objSNMP
objSNMP\Invoke("Open('" + IP + "', 'public', 2,1000)")
result$= objSNMP\GetStringProperty("Get('"+MIB+"')")
EndIf
If result$ =""
result$= "Fehler: " + COMate_GetLastErrorDescription()
EndIf
ProcedureReturn result$
EndProcedure
Debug snmpget("192.168.110.147",".1.3.6.1.4.1.11.2.3.9.1.1.7.0")
Re: COMatePLUS Schreibweise
und bitte daran denken, mit CreateObject()
erzeugte Objekte auch wieder freizugeben.
Grüße ... Kiffi
erzeugte Objekte auch wieder freizugeben.
Code: Alles auswählen
Procedure.s snmpget(IP.s,MIB.s)
Protected objSNMP.COMateObject
Protected ReturnValue.s
objSNMP = COMate_CreateObject("OlePrn.OleSNMP")
If objSNMP
objSNMP\Invoke("Open('" + IP + "', 'public', 2,1000)")
ReturnValue = objSNMP\GetStringProperty("Get('"+MIB+"')")
objSNMP\Release()
EndIf
If ReturnValue = "" ; Hier eigentlich eher COMate_GetLastErrorCode() abfragen
ReturnValue = "Fehler: " + COMate_GetLastErrorDescription()
EndIf
ProcedureReturn ReturnValue
EndProcedure
a²+b²=mc²