AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

array[1..10] auf Wert prüfen?

Ein Thema von MicMic · begonnen am 9. Aug 2018 · letzter Beitrag vom 9. Dez 2018
Antwort Antwort
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
491 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: array[1..10] auf Wert prüfen?

  Alt 14. Aug 2018, 22:16
Code:
...
50
Halbzeit
52
...
sieht nicht ganz richtig aus.
Jo, hast recht. Hatte es nur unter FPC eben im Browser getestet, und da zählt der bei 51 weiter. Unter Delphi bei 52. Ist ja auch egal, FPC interessiert mich sowieso nicht wirklich. In Delphi und SMS bekomm muss ich nur das Succ weg lassen, und bekomme 51.

Ab WriteLn('Halbzeit') hat I keinen definierten Zustand. D.h. Succ(I) produziert in der zweiten Schleife einen zufälligen Wert. Kann sein, dass es jetzt für dich (zufällig) funktioniert. Würde ich mich aber nicht drauf verlassen.
Das stimmt doch nicht. Der Wert, den Succ(I) zurückgibt, ist immer der selbe. Ich habe es jetzt spaßeshalber mal mit 5 verschiedenen Konstellationen einige Male durchgespielt, und die Schleifenvariable war in keinem einzigen Fall undefiniert, so lange die Schleife mindestens 1 mal durchlaufen wurde. Warum sollte sie das auch sein, es wurde ja im späteren Verlauf nichts reingeschrieben.

Bitte, und das geht jetzt auch an alle anderen, die meinen, dass das nur "eine glückliche Ausnahme" sei: Schickt mir mal einen einzigen Code-Schnipsel, in dem das nicht der Fall ist, und ich nehme alles wieder zurück und gebe zu, dass ich falsch lag. Aber bisher habe ich noch nichts dergleichen bemerkt. for -Schleifen, die durchlaufen, behalten ihren Wert hinterher.

Ich habe anbei mal den ASM-Code für eine Leere For-Schleife von 1 bis 5 mit angehängt. Da sieht man ziemlich gut, wie eine For-Schleife funktioniert, und auch, dass immer nach oben gezählt wird.
Angehängte Grafiken
Dateityp: jpg 2018-08-14_231214.jpg (40,9 KB, 16x aufgerufen)
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#2

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 00:10
Schau mal hier

Dort ist extra angegeben, dass die Variable nach Schleifendurchlauf undefiniert ist.

Durch Codeoptimierung des Compilers "könnte" die Variable nicht den erwarteten Wert haben. Nur weil du jetzt keinen Codeschnipsel bekommst, der das zeigen kann, bedeutet es nicht, dass es nicht doch passieren kann.

Außerdem kann mit einer neuen Compilerversion das Verhalten des bestehenden "funktionierenden" Codes verändert werden. Siehst du schon, dass FPC und Delphi den Code unterschiedlich ausführen.

Ich wäre da sehr vorsichtig.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 07:02
Dort ist extra angegeben, dass die Variable nach Schleifendurchlauf undefiniert ist.
Nee.
Zitat:
FOR-Loop variable '%s' may be undefined after loop
may = könnte.
Lustig das Du sowas für meine Delphi Version gefunden hast.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#4

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 09:17
Nee.
Zitat:
FOR-Loop variable '%s' may be undefined after loop
may = könnte.
Das reicht doch schon um eine Variable als undefiniert anzusehen. Außer ich weiß, wann die Variable undefiniert sein könnte.

Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 09:33
Das "may/könnte" gibt eher an das es am Programmierer liegt dafür Sorge zu tragen ob etwas un-/definiert ist.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 09:42
Das "may/könnte" gibt eher an das es am Programmierer liegt dafür Sorge zu tragen ob etwas un-/definiert ist.
Das „may“ gibt an, dass bei der Entwicklung des Compilers kein Wert darauf gelegt wird, dass in der Schleifenvariable nach der Schleife ein bestimmter Wert enthalten ist auf den man sich verlassen kann.

Wer sich darauf verlässt, ist sozusagen von allen guten Geistern verlassen.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: array[1..10] auf Wert prüfen?

  Alt 15. Aug 2018, 09:50
Schlussendlich, da es ein "may" ist, könnten alle Aussagen zutreffen. Punkt, Ende und abgehakt.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz