If abfrage hüpft trz else in die abfrage

  • VB.NET
  • .NET (FX) 4.0

Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    If abfrage hüpft trz else in die abfrage

    Ich hab eine If abfrage mit folgendes drin:







    VB.NET-Quellcode

    1. ​If String = "animal_cow then
    2. 'Code
    3. else
    4. end if

    Aber Obwohl es nicht animal_cow ist macht er den Code Trotzdem...
    Jemand eine Idee woran es liegt?Bzw was ich machen könnte?

    Also so wie er da ist wird der Code wahrscheinlich kaum kompilieren. Mach mal das Hochkomma wieder zu ;)

    Ansonsten ist das mit dem String etwas komisch so. Sicher dass String != "animal_cow" ist? Und groß String ist auch nicht ein so toller bezeichner, weil das soweit ich weiß ein keyword ist.
    An Error 404 occurred while loading signature...

    xX-Nick-Xx schrieb:

    macht er den Code Trotzdem...
    What :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So sollte es tun, falls nicht, fehlt anderer relevanter Code:

    VB.NET-Quellcode

    1. If FarmString = "animal_cow" then
    2. 'Code
    3. else
    4. end if


    P.s. Poste künftig genau den Code, der bei dir steht nicht irgendwas anderes...
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    If abfrage hüpft trz else in die abfrage
    Alleine als ich das gelesen habe, habe ich mir gedacht, dass da was nicht stimmt. :D Was hat das else damit zu tun?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Also der ganze code sieht so aus, und ist für die XML.

    VB.NET-Quellcode

    1. If fillType = "Animals_pig" Then
    2. Dim fillType2 As XAttribute = node2.Attribute("fillType")
    3. If fillType2 = "straw" Then
    4. Dim fillType4 As XAttribute = node2.Attribute("fillLevel")
    5. NumericUpDown43.Value = fillType4.Value
    6. Else
    7. End If
    8. End If


    So das Problem ist aber es gibt zum beispiel 2x straw.

    Kühe,Schweine

    Somit nimmt er das Value entweder von den Kühen oder den Schweinen...

    er soll es aber von den Schweinen nehmen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xX-Nick-Xx“ ()

    @xX-Nick-Xx Die Schweine bekommen von Deinem Code Augenkrebs. :!: ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @xX-Nick-Xx Würdest Du bitte Deinen Code in Post #7 so formatieren, wie er im Studio angezeigt wird?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @xX-Nick-Xx Kannst Du mal die komplette XML posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die Komplette XML hat 500 zeilen.

    Sicher das du das sehen willst xD

    Ich tu mal die Kühe,Schweine,Schafe hier rein..

    In der Reihenfolge stehen sie auch in der XML:
    1. Kühe
    Spoiler anzeigen

    XML-Quellcode

    1. <onCreateLoadedObject saveId="Animals_cow" numAnimals0="333" numAnimals1="222" newAnimalPercentage="0" cleanlinessFactor="0" dirtToDrop="0" manureToDrop="0" manureFillLevel="0" liquidManureFillLevel="342">
    2. <tipTriggerFillLevel fillType="hayPellets" tipTriggerIndex="1" fillLevel="0" />
    3. <tipTriggerFillLevel fillType="hayPellets" tipTriggerIndex="2" fillLevel="0" />
    4. <tipTriggerFillLevel fillType="straw" tipTriggerIndex="3" fillLevel="1241" />
    5. <tipTriggerFillLevel fillType="powerFood" tipTriggerIndex="1" fillLevel="0" />
    6. <tipTriggerFillLevel fillType="powerFood" tipTriggerIndex="2" fillLevel="124124" />
    7. <tipTriggerFillLevel fillType="dryGrass_windrow" tipTriggerIndex="1" fillLevel="0" />
    8. <tipTriggerFillLevel fillType="dryGrass_windrow" tipTriggerIndex="2" fillLevel="52313" />
    9. <tipTriggerFillLevel fillType="silage" tipTriggerIndex="1" fillLevel="0" />
    10. <tipTriggerFillLevel fillType="silage" tipTriggerIndex="2" fillLevel="1422" />
    11. <tipTriggerFillLevel fillType="water" tipTriggerIndex="4" fillLevel="5" />
    12. <tipTriggerFillLevel fillType="grass_windrow" tipTriggerIndex="1" fillLevel="4" />
    13. <tipTriggerFillLevel fillType="grass_windrow" tipTriggerIndex="2" fillLevel="55" />
    14. <fillLevelMilk fillLevel="234" />
    15. </onCreateLoadedObject>

    2. Schweine
    Spoiler anzeigen

    XML-Quellcode

    1. <onCreateLoadedObject saveId="Animals_pig" numAnimals0="5" numAnimals1="7" newAnimalPercentage="0" cleanlinessFactor="0" dirtToDrop="0" manureToDrop="0" manureFillLevel="0" liquidManureFillLevel="3254">
    2. <tipTriggerFillLevel fillType="wheat" tipTriggerIndex="1" fillLevel="1" />
    3. <tipTriggerFillLevel fillType="barley" tipTriggerIndex="1" fillLevel="2" />
    4. <tipTriggerFillLevel fillType="rape" tipTriggerIndex="1" fillLevel="3" />
    5. <tipTriggerFillLevel fillType="sunflower" tipTriggerIndex="1" fillLevel="4" />
    6. <tipTriggerFillLevel fillType="soybean" tipTriggerIndex="1" fillLevel="5" />
    7. <tipTriggerFillLevel fillType="maize" tipTriggerIndex="1" fillLevel="6" />
    8. <tipTriggerFillLevel fillType="potato" tipTriggerIndex="1" fillLevel="7" />
    9. <tipTriggerFillLevel fillType="sugarBeet" tipTriggerIndex="1" fillLevel="8" />
    10. <tipTriggerFillLevel fillType="water" tipTriggerIndex="2" fillLevel="9" />
    11. <tipTriggerFillLevel fillType="straw" tipTriggerIndex="3" fillLevel="10" />
    12. <tipTriggerFillLevel fillType="hayPellets" tipTriggerIndex="1" fillLevel="11" />
    13. </onCreateLoadedObject>

    3. Schafe
    Spoiler anzeigen

    XML-Quellcode

    1. <onCreateLoadedObject saveId="Animals_sheep" numAnimals0="37" numAnimals1="12" newAnimalPercentage="0.37777777671817" cleanlinessFactor="0" dirtToDrop="585.12692912418" palletSpawnerFillDelta="1.4210854715202e-14">
    2. <tipTriggerFillLevel fillType="dryGrass_windrow" tipTriggerIndex="1" fillLevel="666" />
    3. <tipTriggerFillLevel fillType="hayPellets" tipTriggerIndex="1" fillLevel="0" />
    4. <tipTriggerFillLevel fillType="water" tipTriggerIndex="2" fillLevel="45164.169270833" />
    5. <tipTriggerFillLevel fillType="grass_windrow" tipTriggerIndex="1" fillLevel="333" />
    6. </onCreateLoadedObject>


    Kompletter XML-Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. For Each node2 As XElement In doc2.Descendants("tipTriggerFillLevel")
    2. ' MsgBox(node2.Value)
    3. If fillType = "Animals_pig" Then
    4. Dim fillType2 As XAttribute = node2.Attribute("fillType")
    5. If fillType2 = "straw" Then
    6. Dim fillType4 As XAttribute = node2.Attribute("fillLevel")
    7. NumericUpDown43.Value = fillType4.Value
    8. End If
    9. End If
    10. Next


    Und er nimmt aus der For Each immer das letztere (Also die Schafe) außer ich mach Exit For :D Aber das bringt eher nur bei den Kühen was...

    Ps: Die XML ist aus einem Spiel und lässt sich nicht ändern.

    Mfg

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xX-Nick-Xx“ ()

    Das geht noch wesentlich besser.
    Am besten ganze Methoden posten und unnötige Leerzeilen weglassen.

    xX-Nick-Xx schrieb:

    So das Problem ist aber es gibt zum beispiel 2x straw.

    Kühe,Schweine

    Somit nimmt er das Value entweder von den Kühen oder den Schweinen...

    er soll es aber von den Schweinen nehmen...

    Arrrrgh, schonwieder unnötige Leerrzeilen, was soll das !?
    Leerzeilen sind sinnvoll, um Textabschnitte optisch von einander zu trennen, um die Lehsbarkeit zu erhöhen !
    Wenn nach jeder Zeile, eine Leerzeile gemacht wird, ist der Effeckt dahin, bzw. ad absurdum geführt !

    Zum Thema:
    Wenn es verschiedenartiges Stroh gibt, musst du das natürlich auch berücksichtigen.
    Du brachst ein vernünftiges Datenmodel, straw könnte z.B. eine Klasse mit ensprechenden Eigenschaften sein.
    Zu dem Thema gibt es hier genug.
    @xX-Nick-Xx OK.
    Mit nem Header und nem Footer ist das ne richtige XML.
    Dein Problem kann ich allerdings nicht nachvollziehen.
    Du hast 3 Datensätze: Kühe, Schweine, Schafe.
    Wenn Du den von den Schweinen nimmst, sollte doch der "straw"-Wert 10 kommen.
    Da scheint doch in Deinem Code was nicht zu stimmen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich gehe davon aus und auch so wie seine jetzige For Each aussieht das er ja nur nach dem Zeug sucht
    und alles ausgeben lässt und per if/else abfragt.

    Wo wird fillyType zugewiesen in deiner For Each ?

    Wieso lädst du die XML nicht in eine vernünftig gebaute Klasse ?
    Die Wartung sowie die Zugreifbarkeit (Gibt es das Wort) wären sowas von einfacher.

    Und da die XML ja aus nem Spiel kommt wird sich die XML wohl auch an ihre Standards
    halten was Einträge usw angeht.

    Wäre mal mein Vorschlag zu dem ganzen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Also, ich mach es so.

    Ich frage ganz oben die saveID ab

    VB.NET-Quellcode

    1. Dim doc2 As XDocument = XDocument.Load(SavegameDialog.SelectedPath & "\vehicles.xml")
    2. For Each node As XElement In doc2.Descendants("onCreateLoadedObject")
    3. Dim fillType As XAttribute = node.Attribute("saveId")


    Dann frag ich mit einer if in der For Each ab ob die SaveID = "Animals_Cow" ist

    Also:

    VB.NET-Quellcode

    1. If fillType = "Animals_cow" Then
    2. For Each node2 As XElement In doc2.Descendants("tipTriggerFillLevel")
    3. ' MsgBox(node2.Value)
    4. Dim fillType2 As XAttribute = node2.Attribute("fillType")
    5. If fillType2 = "straw" Then
    6. Dim fillType4 As XAttribute = node2.Attribute("fillLevel")
    7. NumericUpDown29.Value = fillType4.Value
    8. End If
    9. Next
    10. End If


    und so mach ich es auch mit den Schafen und kühen...

    Aber Die For each geht zwar rein, hüpft dann aber weiter zu den Schweinen bzw schafen

    xX-Nick-Xx schrieb:

    VB.NET-Quellcode

    1. For Each node2 As XElement In doc2.Descendants("tipTriggerFillLevel")
    machst Du

    VB.NET-Quellcode

    1. For Each node2 As XElement In node.Descendants("tipTriggerFillLevel")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!