Seltsamer Fehler beim Zuweisen eines Variablenwertes



  • Hi Leute...

    Ich habe folgendes, seltsames Problem:
    Ich habe folgende Codezeilen:

    (1)	jmpY = 0; // das war mehr ein Test
    (2)	jmpY = CalcY(); // um diese Zeile geht es
    (3)	jmpVer = Cam.View() - Cam.Position(); // hier bloss zur Ueberpruefung
    

    Setze ich nun in keiner Zeile einen Haltepunkt und lasse das Programm normal laufen, ist 'jmpY' immer irgendetwas wie: 4.929207E-41.
    CalcY() ist eine ganz normale Funktion, die ganz normal komplizierte Berechnungen durchfuehrt und anschliessend das Ergebnis zurueckgibt. Diese Funktion gibt aber auf keinen Fall den Wert 4.929207E-41 zurueck.
    Setze ich nun bei Zeile (3) einen Haltepunkt, enthaelt 'jmpY' ebenfalls einen falschen Wert. Wenn ich mir aber unter 'Start->Auswerten/Aendern' den Rueckgabewert von 'CalcY()' anschaue, kommt da meistens 1 raus. Auf keinen Fall aber kommt 4.929207E-41 heraus! 😞
    Setze ich nun auch in Zeile (2) einen Haltepunkt, gehe dann per 'F9' weiter und ueberpruefe dann 'jmpY', enthaelt die Variable den tatsaechlichen Rueckgabewert von 'CalcY()'.
    Woran kann das liegen, dass nur dann der richtige Wert uebergeben wird, wenn ich dort einen Haltepunkt setze???
    Weiss jemand Rat?
    Danke fuer alle Antworten im voraus!
    MfG Aoeke

    <edit>'jmpY' ist als private deklariert: "float jmpY;"</edit>



  • hm,

    ich weiss nicht, woran es bei dir liegt. Bei uns hatten wir derartige Probleme auch schon mal.

    Zum Beispiel hatte ich schon mal sowas unglaubliches:

    int i=0;
    
    if(true)
     i=1;  // selbst ebi einem Haltepunkt kam er nie hier an.
    ShowMessage(IntToStr(i));
    

    ihr werdet es nicht glauben. Ich hab die Objekt-Dateien gelöscht, auf Projekt neu erstellen rumgetrampelt usw. i war immer 0.
    Habb dann die Datei gelöscht und neugeschrieben. Aufeinmal gings. *schulterzuck*



  • AndreasW schrieb:

    hm,Habb dann die Datei gelöscht und neugeschrieben. Aufeinmal gings. *schulterzuck*

    Datei neugeschrieben?? ist bei mir eher unguenstig, da es 1300+ Zeilen sind... 😞
    Ist das eine kleiner suesser bug vom BCB5 oder wie? So ein kackdreck :D...
    Ich warte mal noch, vielleicht kommen ja noch weitere Antworten.. 😃
    Aber danke natuerlich an dich.. 😃
    MfG Aoeke



  • Aoeke schrieb:

    Datei neugeschrieben?? ist bei mir eher unguenstig, da es 1300+ Zeilen sind... 😞

    bei uns haben wir in sollchen Fällen Praktis/Abis bemüht 😃



  • Aoeke schrieb:

    Wenn ich mir aber unter 'Start->Auswerten/Aendern' den Rueckgabewert von 'CalcY()' anschaue, kommt da meistens 1 raus.

    Ist das denn ein gültiger bzw. erwarteter Wert?



  • Jansen schrieb:

    Aoeke schrieb:

    Wenn ich mir aber unter 'Start->Auswerten/Aendern' den Rueckgabewert von 'CalcY()' anschaue, kommt da meistens 1 raus.

    Ist das denn ein gültiger bzw. erwarteter Wert?

    Jaja, der stimmt schon!!!



  • OK. Ich habe selber eine Loesung gefunden:

    // anstatt dieser Zeile
    jmpY = CalcY();
    
    // habe ich jetzt diese
    jmpY = Cam.PositionY();
    

    Ist in sofern derselbe Effekt, da Cam.PositionY() den Wert der Eigenschaft Cam.Y zurueckliefert, und der bei jedem Frame mit CalcY() berechnet wird...
    Danke fuer alle Antworten!
    MfG Aoeke


Log in to reply