AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi For-To-Do-Schleife beginnt nicht mit Startwert
Thema durchsuchen
Ansicht
Themen-Optionen

For-To-Do-Schleife beginnt nicht mit Startwert

Ein Thema von DevidEspenschied · begonnen am 29. Okt 2014 · letzter Beitrag vom 30. Okt 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#1

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 14:19
Weshalb ich fragte, ob das Ergebnis nach der Schlafe denn wie erwartet ist...
NEIN.

"Nach" der Schleife ist i immer "ungültig".


Intern kann der Compiler das i anders laufen lassen, je nach Code-Optimierung, aber bei "Verwendung" ist i immer richtig (wird intern wieder umgerechnet)
Der Debugger zeigt nur manchmal was Falsches an, vorallem wenn man i innerhalb der Schleife garnicht verwendet.



Zitat:
Delphi-Quellcode:
MaxZahl:=20;
for i:=1 to MaxZahl do
Ach ja, Delphi cached den Endwert sowieso immer, weswegen man dort keine Variable benötigt.
Drum knallt es gern, wenn man Items aus Listen löscht und dabei die Schleife vorwärts durchläuft.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Okt 2014 um 14:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.826 Beiträge
 
Delphi 12 Athens
 
#2

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 15:40
Hat jemand nach dem i gefragt? oO

Das was die Schleife bezwecken sollte, wurde erreicht, ja oder nein? Das war die Frage an den TE. Falls nein hätten wir es ja mit einem Bug zu tun.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.583 Beiträge
 
Delphi 12 Athens
 
#3

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 16:07
Aso.

Dachte du meinst das i, weil da ganz oben, außer dem Kommentar ja nichts in der Schleife war, was ein Ergebnis liefern könnte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 17:42
Aso.

Dachte du meinst das i, weil da ganz oben, außer dem Kommentar ja nichts in der Schleife war, was ein Ergebnis liefern könnte.
Jupp, das Ergebnis ist doch völlig korrekt 20x nix machen. Läuft wie erwartet
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.783 Beiträge
 
Delphi 12 Athens
 
#5

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 17:46
Aso.

Dachte du meinst das i, weil da ganz oben, außer dem Kommentar ja nichts in der Schleife war, was ein Ergebnis liefern könnte.
Jupp, das Ergebnis ist doch völlig korrekt 20x nix machen. Läuft wie erwartet
Bei aktiver Optimierung wird die Schleife sogar ganz weggelassen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 29. Okt 2014, 17:50
Aso.

Dachte du meinst das i, weil da ganz oben, außer dem Kommentar ja nichts in der Schleife war, was ein Ergebnis liefern könnte.
Jupp, das Ergebnis ist doch völlig korrekt 20x nix machen. Läuft wie erwartet
Bei aktiver Optimierung wird die Schleife sogar ganz weggelassen.
Da 20x nix genauso gut wie gar nicht nix, ist das Ergebnis gleich - nur schneller
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
444 Beiträge
 
Delphi 12 Athens
 
#7

AW: For-To-Do-Schleife beginnt nicht mit Startwert

  Alt 30. Okt 2014, 20:17
Hallo,

sorry für die verspätete Antwort.

Ich verwende i in meinem Programm tatsächlich in der Schleife, und habe ein Array mit 20 Einträgen, welches ich über die For-Zählervariable anspreche:

Delphi-Quellcode:
var i, MaxZahl : Byte;
    TestArray : Array[1..20] of string;
begin
   {Array-Befüllung}

   MaxZahl:=20;
   for i:=1 to MaxZahl do
   begin
     if TestArray[i] = 'then ShowMessage('Leerer Arrayeintrag');
   end;
end;
Aber wie gesagt, ich bin umgestiegen zu Repeat...Until und es läuft.
Devid
Devid Espenschied
Pre-Sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  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 10:52 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