Forum: Object-Pascal / Delphi-Language
by Dennis07,
9. Dez 2018
Ich weiß, ist jetzt schon etwas älter dieses Thema, und ich habe mir gerade noch mal (durch Zufall) die offizielle Dokumentation der Wahrnung durchgelesen. Und diese besagt:
Und genau das passierte in meinem Code:
Ist also wirklich nichts dran auszusetzen. Das nur noch als kleiner Abschluss.
Forum: Object-Pascal / Delphi-Language
by Dennis07,
14. Aug 2018
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.
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...
Forum: Object-Pascal / Delphi-Language
by Dennis07,
14. Aug 2018
Und nein, das stimmt einfach nicht. Sorry, aber das ist falsch.
Die Zählervariable ist eine ganz normale Variable, die vor oder auch danach einen festen Wert hat/haben kann.
Deshalb kannst du ja auch 2 for-Schleifen hintereinander packen ohne dass es zu Problemen kommt.
program CountTo100;
var
I: Integer;
begin
Forum: Object-Pascal / Delphi-Language
by Dennis07,
14. Aug 2018
Das ist nicht ganz richtig. Es wird keine Wahrnung deshalb ausgegeben, weil es eine Schleifenvariable ist, sondern nur deshalb, weil sie bei einer for-Schleife möglicherweise undefiniert sein könnte (nämlich ist sie das genau immer dann, wenn die Schleife kein einziges mal durchlaufen wurde). Die selbe Wahrnung wird dir aber auch ausgegeben, wenn du auf eine andere Variable zum Lesen zugreifst,...
Forum: Object-Pascal / Delphi-Language
by Dennis07,
12. Aug 2018
Aber wenn es dich so krass stört, die Ergebnisvariable als Schleifenvariable zu verwenden, dann bitte...
function AssertArray(AArray: TArray<Boolean>): Boolean;
var
Current: Boolean;
begin
for Current in AArray do
begin
if not Current then
Forum: Object-Pascal / Delphi-Language
by Dennis07,
12. Aug 2018
Was zwar sein kann (ist mir zwar noch nicht unter gekommen, aber das Gerücht habe ich auch schonmal gehört), allerdings ist es für for in-Schleifen ja eh völlig egal, in welcher Reihfolge diese ausgeführt werden. Du kannst ja mal meinen Code durchgehen unter der Prämisse, dass eine for in-Schleife immer Rückwärts ausgeführt werden würde, und wirst feststellen, dass es am Ergebnis und der...
Forum: Object-Pascal / Delphi-Language
by Dennis07,
12. Aug 2018
Dann ist der Rückgabewert undefiniert. Was Allerdings ja nicht sein kann, da das Array ja bei ihm angeblich immer 10 hat. Aber selbst wenn nicht, was soll denn in so einem Fall korrekterweise widergegeben werden?
True, weil es kein False gibt oder False, weil es kein True gibt? Wenn du das entschieden hast, kannst du ja dann noch eine Initializierung unten vornehmen. Oder, wohl noch besser,...
Forum: Object-Pascal / Delphi-Language
by Dennis07,
11. Aug 2018
Um nochmal auf das Problem zurückzukommen, ich würde es sogar mit einer for in -Schleife machen, da man hier ja nur lesezugriff braucht. Wäre noch etwas schneller und einfacher:
function AssertArray(AArray: TArray<Boolean>): Boolean;
begin
for Result in AArray do
begin
if not Result then
begin
Exit;