Aufwärtszähler in if-Bedingung

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
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

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
Zuletzt geändert von DjFresH am Montag 19. Januar 2009, 12:53, insgesamt 1-mal geändert.
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Kann sein, dass ich das Problem missverstehe, aber oben ein

Code: Alles auswählen

x = 0
und am gewünschten Ort ein

Code: Alles auswählen

x += 1
müsste genügen.
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

audax hat geschrieben:http://www.if-schleife.de/
Hey, das ist doch mein Link ;-)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

audax hat geschrieben:http://www.if-schleife.de/
Das gefällt mir. Übersichtlich, nicht zu viel Text, schnell erfassbar - kommt in die Top-Ten meiner Linksammlung. :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

@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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

@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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

??? --> XML --> (parsen per Python & Umwandlung) --> ??? --> Profit!
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

@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...
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

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...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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!!!! :-D

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 ...
DjFresH
User
Beiträge: 36
Registriert: Donnerstag 20. November 2008, 08:28

haha ich bin erst jetzt auf diesen link gegangen... :oops:
Antworten