AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi FOR-Schleifenvariable 'ti' kann nach Durchlauf undefiniert..
Thema durchsuchen
Ansicht
Themen-Optionen

FOR-Schleifenvariable 'ti' kann nach Durchlauf undefiniert..

Ein Thema von Pseudemys Nelsoni · begonnen am 1. Dez 2004 · letzter Beitrag vom 1. Dez 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#11

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:11
Hallo Shaman,

eigentlich sollte es N sein.
Und wie ich bereits gesagt habe, bei mir wurde die Schleife einmal "umgedreht", warum auch immer

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#12

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:24
Hi,

was ich eigentlich sagen wollte:

Delphi-Quellcode:
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
das bringt bei mir nie niemals nich ne Warnung vom Compiler, sondern erst, wenn eben nach Schleifendurchlauf was mit ti gemacht wird:
Delphi-Quellcode:
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
ShowMessage(IntToStr(i)); //<<--FOR-Schleifenvariable 'ti' kann ......
Aber das scheint ja schon gar nimmer das Prob zu sein

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:25
Hoi

Gut, ob jetzt N oder N+1, hauptsache er ist definiert.
Das sie umgedreht ist, liegt an der Optimierung durch den Compiler. Sie sagen aber, dass das nur passiert, wenn es keine Rolle spielt, wie die Schleife durchlaufen wird. Das sollte also keine Probleme bereiten... hoffentlich

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:27
Zitat von Shaman:
Das sie umgedreht ist, liegt an der Optimierung durch den Compiler. Sie sagen aber, dass das nur passiert, wenn es keine Rolle spielt, wie die Schleife durchlaufen wird. Das sollte also keine Probleme bereiten... hoffentlich
Doch, es spielt eine Rolle, und zwar wenn du dich darauf verlässt, dass die Schleife nicht umgedreht wird.

Nehmen wir als Beispiel diesen Code:
Delphi-Quellcode:
for i := 0 to 1000 do
  myarray[i] := 0;
myarray[i] := 1000;
Hier wird die Warnung erzeugt, weil die Schleife rückwärts durchlaufen werden kann, und der Wert von i somit nicht wie erwartet 1000 sondern 0 ist.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#15

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:31
Zitat von Steve:
Hi,

was ich eigentlich sagen wollte:

Delphi-Quellcode:
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
das bringt bei mir nie niemals nich ne Warnung vom Compiler, sondern erst, wenn eben nach Schleifendurchlauf was mit ti gemacht wird:
Delphi-Quellcode:
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
  for ti := 0 TO 5 DO
  begin
    bla;
  end;
ShowMessage(IntToStr(i)); //<<--FOR-Schleifenvariable 'ti' kann ......
Aber das scheint ja schon gar nimmer das Prob zu sein

Gruß
Stephan


naja die for-schleifen initialisieren "ti" doch aber... also undefiniert kanns nich sein oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#16

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:35
Hi,

der Compiler sagt ja auch 'könnte' und nicht 'ist'

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 16:36
Zitat von alcaeus:
Hier wird die Warnung erzeugt, weil die Schleife rückwärts durchlaufen werden kann, und der Wert von i somit nicht wie erwartet 1000 sondern 0 ist.
Stimmt ja...
Gut, dass mir das jetzt klar ist
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#18

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 17:52
Zitat von Steve:
Hi,

der Compiler sagt ja auch 'könnte' und nicht 'ist'

Gruß
Stephan

auch "könnte" ist falsch, die schleifen werden 100% ausgeführt, also kriegen sie auch nen wert.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#19

Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie

  Alt 1. Dez 2004, 18:12
Also definiert ist eine Variable doch nur dann, wenn sie genau einen Vorhersagbaren Wert hat.

nach einer Schleife der Art

for ti := 0 to 5 do MachWas (Str[ti]);

MachWas (Str[ti]);


ist ti -1 oder 0 (je nach Compiler Version und wenn gedreht wurde)
oder 5 oder 6 (je nach Compiler Version und wenn nicht gedreht wurde)

das ist undefiniert genug oder?

bei delphi 1 z.B war ti nach der Schleife garantiert 5
bei delphi 7 ist ti nach der Schleife 6


und damit man sich nicht drauf verläßt kommt die warnung

weil bei Delphi 8,9,10 könnts ja wieder ganz anderst sein

DerDan
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz