VBscript in Python umschreiben--> Keyword: NOTHING und WI

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Hallo Python-Gemeinde,

ich bin z.Z. daran ein ziemlich grosses VBscript-Programm in ein äquivalentes Python-Programm umzuschreiben. Da ich vorher noch nie mit Python zu tun gehabt habe, hab ich mir erstmal 2 gute Bücher besorgt und einen Tag im www gestöbert.
So weit zu meinem Kenntnisstand.
In dem VBscript gibt es jetzt Objektvariablen, die mit dem Keyword: NOTHING von dem Objekt wieder getrennt werden, also eine Art terminierung.
Ausserdem gibt es das Keyword WITH, dass eine Standartfunktion ist und eine Fehlermeldung (Messagebox) hervorruft.

Jetzt hab ich nichts gefunden, wie ich das in Python realisieren könnt.

Weiss jemand was ich meine und wie ich das machen kann?

Vielen Dank und Daumen hoch für jede Antwort.
BlackJack

Ich weiss nicht, wie viele hier VBScript können, aber ich kann mit der Beschreibung nicht viel anfangen.

Was sind in VBScript "Objektvariablen" und was bedeutet es eine solche von einem Objekt zu "trennen"? Kannst Du kurze Beispiele geben und beschreiben was da konkret passiert?

Einfache Messageboxen lassen sich mit der Standardbibliothek am einfachsten mit `Tkinter` bzw. mit den Funktionen im Modul `tkMessageBox` anzeigen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Pü-Ton hat geschrieben:In dem VBscript gibt es jetzt Objektvariablen, die mit dem Keyword: NOTHING von dem Objekt wieder getrennt werden, also eine Art terminierung. Ausserdem gibt es das Keyword WITH, dass eine Standartfunktion ist und eine Fehlermeldung (Messagebox) hervorruft.
Hallo Pü-Ton!

Willkommen im Python-Forum!

- ``NOTHING`` ist in Python ``None``

- ``WITH`` gibt es in Python nicht so wie du es aus VB kennst. Außerdem verstehe ich deine Meldung über WITH nicht.
Statt ``WITH`` verwendet man in Python einen zusätzlichen *kurzen*, aber normalerweise aussagekräftigen, Namen für ein Objekt.

Code: Alles auswählen

kn = langer_name_eines_objektes
kn.methode1
kn.methode2
...
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

@Gerold:

Jaaaaa, vielen Dank. Genau so etwas wollte ich sehen *Tag gerettet* :)
Dass ist ja super.
Vielen Dank
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

Also das mit dem WITH ist so gemeint:
In VBscript sieht der Code z.B. so aus:

Code: Alles auswählen

    With xPE
      strErrText = "Your Document failed to load" & _
      "due the following error." & vbCrLf & _
      "Error #: " & .errorCode & ": " & xPE.reason & _
      "Line #: " & .Line & vbCrLf & _
      "Document URL: " & .url
    End With 

    msgbox strErrText
Da der Ausdruck WITH am Ende mit END WITH abgeschlossen ist, handelt es sich schon um eine Funktion. Ausserdem wird sie von Notepad und eclipse blau hinterlegt, was auch dafür spricht...
Hmmm :roll: :?: :?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Pü-Ton hat geschrieben:Da der Ausdruck WITH am Ende mit END WITH abgeschlossen ist, handelt es sich schon um eine Funktion.
Hallo Pü-Ton!

WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! WITH ist keine Funktion! :-)

Code: Alles auswählen

import win32ui
import win32con

err_text = (
    "Your Document failed to load due the following error.\n"
    "Error #: %s: %s Line #: %s;\n"
    "Document URL: %s;" 
) % (x_pe.errorCode, x_pe.reason, x_pe.Line, x_pe.url)

win32ui.MessageBox(err_text, "Fehler", win32con.MB_OK)
Dafür brauchst du *pywin32* http://sourceforge.net/project/showfile ... p_id=78018

Mit Python-Bordmitteln würde das so aussehen:

Code: Alles auswählen

import ctypes
...
ctypes.windll.user32.MessageBoxA(0, err_text, "Fehler", 0)
Beides funktioniert so aber nur unter Windows.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Pü-Ton
User
Beiträge: 67
Registriert: Donnerstag 8. Mai 2008, 07:52

*kleinlaut* : ok, es ist keine Funktion :oops:

:arrow: Gedankt sei dem Meister der SchreibSchlange 8)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gerade dein With-Statement ist sinnlos, weil es genau das bedeutet:

Code: Alles auswählen

xPE.strErrText = "Your Document failed to load" & _
    "due the following error." & vbCrLf & _
    "Error #: " & .errorCode & ": " & xPE.reason & _
    "Line #: " & .Line & vbCrLf & _
    "Document URL: " & .url 
With mit nur einer Anweisung ist einfach unnütz.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten