Seite 1 von 1
Aufwärtszähler in if-Bedingung
Verfasst: Freitag 16. Januar 2009, 16:22
von DjFresH
Habe eine xml-Datei welche ich parse und gewisse Informationen,
raushole.
Nun muss ich Teile dieser Informationen weiterverarbeiten ,
dafür habe ich eine if-Schleife entworfen:
Code: Alles auswählen
if mode == "0":
repf.write(set_c+var_name+set_e+ze)
set_d = "varGetVal(r'"
set_f = "')"
repf.write(" = "+set_d+var_name+set_f+ze*2)
Jetzt will ich das vor dem "=" zeichen eine art zählvariable steht die aufwärts zählt bis die gesamte "for schleife" oberhalb durchlaufen ist,
also bis die Datei durchgeparst ist...
Ist das möglich?
gruß
Sascha
Verfasst: Freitag 16. Januar 2009, 16:25
von Craven
Kann sein, dass ich das Problem missverstehe, aber oben ein
und am gewünschten Ort ein
müsste genügen.
Verfasst: Freitag 16. Januar 2009, 16:40
von audax
Verfasst: Freitag 16. Januar 2009, 16:45
von Hyperion
Hey, das ist doch mein Link

Verfasst: Freitag 16. Januar 2009, 17:25
von numerix
Das gefällt mir. Übersichtlich, nicht zu viel Text, schnell erfassbar - kommt in die Top-Ten meiner Linksammlung.

Verfasst: Freitag 16. Januar 2009, 19:55
von Leonidas
DjFresH, kann es sein, dass du da versuchst Pythoncode zu generieren? Das ist in der Regel eine ziemlich dumme Idee und es gibt oft viel bessere Lösungen. Wie wäre es wenn du etwas über dein Problem X erzählst?
Verfasst: Sonntag 18. Januar 2009, 13:00
von DjFresH
@Leonidas
...Ok ich versuchs mal zu erklären:
Also ich parse mit einer for-schleife eine xml datei,
von der ich nur bestimmte informationen raushole.
Dabei handelt es sich um Signale, die ein Attribut besitzen,
ich nenne es mal "SetSignalValue" (= mode).
Dieses Attribut ist entweder 0 (=Write),1 (=Read) und 2 (=Expression).
Damit ich diese Signale besser weiterverarbeiten kann ersetze ich,
die obigen zahlen mit den ausdrücken in den klammern.
Dann bastel ich alles zu einem Code zusammen.
Wenn es 1 ist und ich das mit Read ersetze muss ich nichts mehr mit diesem Signal tun.
Wenn es 0 ist dann sollte das Signal eine Art Zuweisung haben,
z.B. "A1 = varGetVal(r'SIGNAL')
und eben wenn das nächste Signal kommt mit dem Wert "0",
dann soll es einen Wert aufwärtszählen, z.B. A2 usw.
Ich hoffe das ist so einigermaßen verständlich.
Das was Craven vorschlägt habe ich schon ausprobiert und
es hat nicht funktioniert.
mfg
Sascha
Verfasst: Sonntag 18. Januar 2009, 13:14
von Hyperion
DjFresH hat geschrieben:
Dann bastel ich alles zu einem Code zusammen.
Genau das wollte Leonidas doch wissen!?! Was für "Code"? Python?
Außerdem hast Du nicht erklärt, was Du erreichen willst! Was macht der "Code" später? Soll der "ausführbar" sein? Wird der irgend wie "interpretiert"?
Das sind die wesentlichen Infos, die wir brauchen, um Dir ggf. ein besseres Vorgehen zu empfehlen.
Verfasst: Sonntag 18. Januar 2009, 13:46
von DjFresH
@Hyperion
ok...
Es handelt sich um eine Simulations Software geschrieben in C++ in
der Boost Python implementiert wurde.
Mit hilfe von Python Code sollen gewisse simulations aufgaben automatisiert werden.
Verfasst: Sonntag 18. Januar 2009, 13:59
von Hyperion
Also vielleicht stehe ich jetzt auf dem Schlauch, aber ich kapiere das immer noch nicht ...
- Irgend etwas ist in C++ geschrieben
- Du hast im ersten Posting python-Code gezeigt, in dem Du (vermutlich) irgend einen Code zusammenbastelst (Was ist das für Code?)
- Du parst eine XML-Datei, in der irgend welche Infos stehen, die weiter verarbeitet werden sollen.
So das habe ich bisher alles rausgefunden. aber mir ist noch schleierhaft, wie das alles zusammenpasst!
Wozu wird da Code zusammengebaut? Was ist das für Code? Was passiert später mit dem Code?
Mal als kurzes Ablauf-Diagramm:
Code: Alles auswählen
??? --> XML --> (parsen per Python & Umwandlung) --> ??? --> ???
Wo die XML-Datei herkommt ist vermutlich nicht unbedingt wichtig. Aber was soll "hinten" rauskommen und was passiert dann damit?
Verfasst: Sonntag 18. Januar 2009, 14:58
von audax
Code: Alles auswählen
??? --> XML --> (parsen per Python & Umwandlung) --> ??? --> Profit!
Verfasst: Montag 19. Januar 2009, 09:41
von DjFresH
@audax

ne am ende gibt das leider keinen profit
außer der Zeitersparnis bei der arbeit...
@Hyperion
Mit dem MFC Programm kann man Python Code ausführen,
da Boost Python implementiert wurde...
Python kommuniziert so zu sagen über einen Automation Controller mit dem Event Framework des Programms.
Die Daten werden im XML Format geladen, da ich nicht alle informationen benötige kann ich mit Python gewisse Daten aus der XML rauslesen,
muss sie aber so weiterverarbeiten dass diese Daten dann als
Befehlszeile ausgeführt werden damit die Simulation richtig ablaufen kann.
Da ich diese Signale noch in float umwandeln muss wäre es einfacher
für mich wenn jede variable eine zuweisung hätte:
z.B. a1=...,a2=...,a3=...
deshalb dieser aufwärtszähler...
Verfasst: Montag 19. Januar 2009, 09:52
von DjFresH
ok ich habs soweit gelöst,
man muss den zähler außerhalb der if-schleife positionieren
und das x=0 außerhalb der for-schleife...
dann klappt das...
Verfasst: Montag 19. Januar 2009, 10:04
von Hyperion
DjFresH hat geschrieben:ok ich habs soweit gelöst,
man muss den zähler außerhalb der if-schleife positionieren
und das x=0 außerhalb der for-schleife...
dann klappt das...
Es gibt keine if-Schleife!!!!
Also das Problem scheint doch relativ komplex zu sein. Zu 100% habe ich das noch nicht verstanden

(Wie wird was übertragen, welche Sprache wird da generiert und "ausgeführt" usw.)
Aber Du hast ja nun eine lauffähig Lösung ...
Verfasst: Montag 19. Januar 2009, 10:19
von DjFresH
haha ich bin erst jetzt auf diesen link gegangen...
