returned exit code 0 / script wird abgebrochen

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
beginner_
User
Beiträge: 5
Registriert: Donnerstag 4. September 2008, 13:36

Donnerstag 4. September 2008, 13:43

Bin ein wenig am ausprobieren und habe folgendes Test Skript:

Code: Alles auswählen

from win32com.client import GetActiveObject
cfapp = GetActiveObject("ChemFinder11.Application")
cfdoc = cfapp.ActiveDocument
cfrset = cfdoc.Recordset
cfmol = cfdoc.Fields("Structure")
cfid = cfdoc.Fields("Mol_ID")
current_MolID = cfrset.Value(cfid.index)
print current_MolID
#Path = "C:/Joos/temp.cdx"
#mol.Write(Path)
while not cfrset.EOF:
    mol = cfrset.Value(cfmol.index)
    print "Mol_ID: " + str(cfrset.Value(cfid.index))
    print "Atom Count: " + str(mol.Atoms.Count)
    cfrset.MoveNext() 
#hier wir das skript abgebrochen mit exid code 0.   
cfrset.MoveFirst
while cfrset.Value(cfid.index) < current_MolID:
    mol = cfrset.Value(cfmol.index)
    print "Mol_ID: " + str(cfrset.Value(cfid.index))
    print "Atom Count: " + str(mol.Atoms.Count)
    cfrset.MoveNext()

cfrset = 0
cfdoc = 0
cfapp = 0
mol = 0
Wie egsagt, der Sinn ist begrenzt ist nur zum ausprobieren, was möglich ist. Ich Frage mich jetzt aber wieso das Skript abgerochen wird an der genannten stelle?
BlackJack

Donnerstag 4. September 2008, 14:16

Woher weisst Du, dass das Skript an der Stelle abgebrochen wird? Kann es nicht auch sein, dass die Bedingung der ``while``-Schleife gleich beim ersten mal schon `False` ist und das Skript ganz normal zum Ende durch läuft?
beginner_
User
Beiträge: 5
Registriert: Donnerstag 4. September 2008, 13:36

Freitag 5. September 2008, 05:51

BlackJack hat geschrieben:Woher weisst Du, dass das Skript an der Stelle abgebrochen wird? Kann es nicht auch sein, dass die Bedingung der ``while``-Schleife gleich beim ersten mal schon `False` ist und das Skript ganz normal zum Ende durch läuft?

Das Skript bedingt ja das diese Applikation Chemfinder geöffnet ist. Wenn ich im Skript ein MoveNext mache, sehe ich das in der Applikation, also im formular wird dann der nächste Datensatz angezeigt.

Und am ende des Skripts bin ich immer beim letzten datensatz. Die Idee wäre ja aber wieder beim gleichen wie zu beginn zu sein.
(Mol_ID = primary key/laufende nummer ohne lücken).

MoveFirst wird also nie ausgeführt, die while schlaufe vorher aber schon. Deshalb wird das Skript meiner Meinung nach da abgebrochen.

EDIT:
omg. Fehler gefunden.
cfrset.MoveFirst()
Die fehlenden Klammern waren die Ursache.
Antworten