Announcement

Collapse
No announcement yet.

D5 - FOR Schleife - in die Falle getappt!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • D5 - FOR Schleife - in die Falle getappt!

    Vor einiger Zeit habe ich gelesen, dass bei D5 die
    for Schleife for i:=0 to 9, von 10 runter auf 1 zählt.

    Da ich soeben in diese Falle getappt bin, und mir
    einbilde dass einige meiner Sachen nicht funktionieren
    dürften wenn das immer so ist, möchte ich fragen
    ob man das in D5 irgendwo einstellen kann, oder ob
    man damit leben muss.

    stephan putz

  • #2
    Hi

    Das ist kein Problem. Entweder Du nutzt eine 'while do' Schleife mit eigenem Zähler, oder in der for Schleife z.b. indexierte Arrays. Grundsätzlich WIRD auch in der richtigen Richtung gezählt wenn es NOTWENDIG ist. D.h. der Compiler kann sehr wohl erkennen ob die Zählrichtung für den weiteren Code wichtig oder unwichtig ist. Im zweiten Falle ist es nämlich Laufzeit technisch immer besser einen Zähler zu dekrementieren, da dann in einem Befehl dekrementiert UND auf null überprüft (abbruchbedingung) werden kann.

    Gruß Hage

    Comment


    • #3
      Achso, der Debugger wertet nun das Zähleregister einer Schleife aus und dieses wird angezeigt. Aber meistens compiliert Delphi ZWEI Zähler, einen für die Schleife und einen internen.

      z.b.

      <pre>

      var
      I,J: Integer;
      A: array[10..100] of Byte;
      begin
      for I := 10 to 100 do
      if A[I] <> 0 then ;<br>

      // wird umgeschrieben in<br>

      J := -1;
      I := 100 - 10;
      repeat
      Inc(J);
      if PByteArray(@A)[J] <> 0 then ;
      until Dec(I) = 0;

      end;<br>

      </pre>

      Das Problem entsteht durch den Debugger der nun NICHT die tatsächliche Variable J als Zähler anzeigt, sondern eben I.

      gruß Hage

      Comment


      • #4
        Die Fehlfunktion im Programm lag nicht an Delphi sondern an mir.<br>
        Der Schleifenzähler in der FOR wird (wenn der Programmierer das so vorsieht) richtig abgearbeitet un der Index stimmt.<p> Jetzt ist mir wieder wohler, weil ich weis, dass meine alten Compilate "gesichert" funktionieren.
        Hagen, danke für die Tips!

        Gruß
        Stephan Put

        Comment

        Working...
        X