Announcement

Collapse
No announcement yet.

Fehler (speicher?)

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

  • Fehler (speicher?)

    Hey,

    ich habe teilweise das problem, daß die laufvariable einer for-schleife erst den endwert annimmt und dann zum anfangswert kommt.
    Das programm benutzt jede menge arrays.
    gibt es irgendwelche speicherbegrenzungen ?

    bis dann

    volker

  • #2
    Hallo,

    nein - das ist kein Bug, sondern ein Feature (Folge der internen Optimierung des Compilers). Wenn auf die Laufvariable nicht an anderer Stelle direkt zugegriffen (zugewiesen) wird, verwendet der Compiler den effektivsten Zähler (CPU)

    Comment


    • #3
      Hallo Andreas,

      das dies durch Optimierung so läuft, ist ja ok, aber wenn der Endwert kleiner als der Anfangswert ist, und dann trotzdem in die Schleife gesprungen wird ist das seltsam.
      Ich denke das hängt mit den Ungerreimtheiten zusammen.
      Im Programm benutze ich einige :-) größere Array (statisch), und die Werte an einigen Stellen im Array haben nicht die Werte, die dort stehen sollten. Es gibt aber keine FEHLERmeldung.
      Jetzt benutze ich an einigen dynamische Arrays und erhalte bei der Zuweisung die Fehlermeldung --> Fehler bei Bereichsprüfung <--.
      In anderen Programmen, von den Variablen und Arrays her kleinere, habe ich keine Probleme.

      Gibt es da Beschränkungen, wenn ja wie kann ich die umgehen oder verändern.
      Wenn dem nicht so ist, woran könnte es sonst liegen.

      Mit bestem Dank

      volke

      Comment


      • #4
        Hi

        Beim Optimierer kann es durchaus vorkommen das der Start/Endwert AUSSERHALB des gültigen Bereiches liegt. Ein array[100..255] kann vom Optimierer intern "aufgelösst" werden, z.B. in for I := 127 downto 0 do ;. Dies passiert sehr häufig wenn dieses Array ein Array of Record; ist.

        Ich vermute also das es an Deinem Quelltext liegt.

        Gruß Hage

        Comment

        Working...
        X