Hi zusammen.
Ich greife mit Python auf eine VB DLL zu. Klappt so eigentlich wunderbar. Nur Kann ich auch auf vb Properties zugreifen? Ich schaffe es nur auf Function zuzugreifen. Funktion heißt ungefähr so: "Public Property Get Status(......."
Also kann man von Python aus auf Properties in einer VB DLL auch zugreifen?
Greetz from 2bock
Mit Python auf DLL zugreifen.
Die Dll heißt Test.dll
Die Klasse clsArchive
Die Funktion heißt TestFunction(), habe ich aber nur erstellt, um auf die Property (TestProperty()) in Visual Basic zugreifen zu können. Sie dürfte wenns geht ruhig wegfallen. Übergeben werden soll nur ein boolsches wahr.
Greetz und schon mal ein Danke von 2bock
Edit (Leonidas): Code in Python Tags gesetzt.
Die Klasse clsArchive
Die Funktion heißt TestFunction(), habe ich aber nur erstellt, um auf die Property (TestProperty()) in Visual Basic zugreifen zu können. Sie dürfte wenns geht ruhig wegfallen. Übergeben werden soll nur ein boolsches wahr.
Code: Alles auswählen
import win32com.client as wc
class TestClass:
def __init__(self):
self.objLicenceClass = wc.Dispatch("Test.clsArchive")
def TestFunction(self):
return self.objLicenceClass.TestFunction(bool(1))
def TestProperty(self):
value = self.objLicenceClass.TestProperty(1)
return value
TC = TestClass()
print TC.TestFunction()
Greetz und schon mal ein Danke von 2bock
Edit (Leonidas): Code in Python Tags gesetzt.
Hi.
Also Du hast natürlich recht. so kann man eine Property ansprechen und daten zurückbekommen. Das klappt auf wunderbar, nur beim Propertyaufruf parameter übergeben, habe ich noch nicht geschafft.
Greetz 2bock.
Also Du hast natürlich recht. so kann man eine Property ansprechen und daten zurückbekommen. Das klappt auf wunderbar, nur beim Propertyaufruf parameter übergeben, habe ich noch nicht geschafft.
Greetz 2bock.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also ich kenne mich mit VB (nicht mehr) aus, aber Versuch es doch mal so, self.objLicenceClass.TestProperty = value. Vielleicht geht ja pywin32 besser als man denken könnte.
Zuletzt geändert von Leonidas am Dienstag 1. März 2005, 14:34, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nein. Leider funktioniert dies auch nicht. Ich bekomme abe nun folgende Fehlermeldung
Also so kann die Property nicht gesetzt werden. Schade.
Weiß vielleicht sonst noch jemand ne mögliche Lösung?
Greetz from 2bock
Code: Alles auswählen
File "MyLicence.py", line 24, in GetLicenceType
self.objLicenceClass.LicenseType = 1
File "D:\Python24\Lib\site-packages\win32com\client\dynamic.py", line 543, in __setattr__
raise AttributeError, "Property '%s.%s' can not be set." % (self._username_, attr)
AttributeError: Property 'MyLicence.clsArchive.LicenseType' can not be set.
>Exit code: 1
Weiß vielleicht sonst noch jemand ne mögliche Lösung?
Greetz from 2bock
Python-Properties funktionieren nur richtig, wenn man eine "New-Style" Klasse benutzt, also von `object`erbt. Hilft das vielleicht?
Hi Black Jack.
Hättest Du vielleicht ein kleines Beispiel diesbezüglich?
Ich hab mal hier ein noch fehlerhaftes Beispiel im Netz gefunden, aber meinst Du das vielleicht so?
Grettz from 2bock
Hättest Du vielleicht ein kleines Beispiel diesbezüglich?
Ich hab mal hier ein noch fehlerhaftes Beispiel im Netz gefunden, aber meinst Du das vielleicht so?
Code: Alles auswählen
>>> class C(object):
def __init__(self):
self.__x = 0
def getter(self):
return self.__x
def setter(self, value):
if value > 0:
self.__x = value
else:
self.__x = 0
def deleter(self):
print "you can't delete x!"
x=property(getter, setter, deleter)
# now x is not a simple attribute, it's a managed property "object"
>>> c = C()
>>> c.x
0
>>> c.x = 9
>>> c.x
9
>>> del c.x
you can't delete x!
>>> c.x
9
>>> c.x =-9
>>> c.x
0
>>> c.__x
Wobei dies hier wohl eher die andere richtung sein wird. Quasi eine Property in Python erstellen und in VB ansprechen.