AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi For-Schleife: negative Anzahl Durchläufe
Thema durchsuchen
Ansicht
Themen-Optionen

For-Schleife: negative Anzahl Durchläufe

Ein Thema von fkerber · begonnen am 11. Mär 2011 · letzter Beitrag vom 16. Mär 2011
Antwort Antwort
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 00:52
Delphi-Version: XE
Hi,

ich "befürchte", ich kenne die Antwort auf die Frage, aber da sie mich doch sehr erstaunt hat, wollte ich nachfragen um sicherzugehen.
Folgendes kleines Beispielprogramm:

Delphi-Quellcode:
var
  i: Byte;
  x: integer;
begin
  x := -1;
  for i := 0 to x do
    showmessage(inttostr(i));
Ich hätte jetzt erwartet (wie ich es so von Java, C etc. kenne), dass diese Schleife genau 0x durchlaufen wird, da Start > Ende.
Stattdessen habe ich mir aber eine Endlosschleife gebastelt (bzw. vllt. rettet der Byte-Überlauf mich irgendwann, soweit habe ich es aber nun nicht getestet).

Ist das etwa as-designed? Oder habe ich einen Fehler irgendwo?
Der Originalcode hatte eine solche Schleife:
for i := 0 to Pred(FPControl.PageCount) do wobei FPControl ein TPageControl mit potenziell 0 Pages ist.
Ist also hier meine (einzige ?!) Rettung ein if davor?


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 00:54
Definier i doch nicht als Byte.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 00:56
Hi,

ok, das löst das Problem - aber wieso?!
Vielleicht ist es einfach schon zu spät, aber ich sehe es grad nicht.


LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 00:59
Vielleicht wird dann alles nach Byte gecastet, keine Ahnung Kann mir da aber auch gut vorstellen, dass der Vergleich (also in ASM) dann irgendwie seltsam ist, auch wenn es nicht gecastet werden sollte.

Ist aber alles nur ins Blaue geraten. Aber bei zwei verschiedenen Typen bin ich da immer vorsichtig. Hatte neulich mal ein Problem mit Integer und Cardinal, weswegen da auch einiges schief lief.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#5

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 01:01
i ist ein Byte, x ist -1 -> macht als Byte $FF. Durchlauf der Schleife also bis 255.
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 01:03
i ist ein Byte, x ist -1 -> macht als Byte $FF. Durchlauf der Schleife also bis 255.
Jup, dem ist wahrlich so Habs gerade mal gestestet.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 11. Mär 2011, 01:04
Hi,

ok, das macht durchaus Sinn.
Sowas doofes aber auch

Gut, Vertrauen in die For-Schleife wiederhergestellt.

LG, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie
Online

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: For-Schleife: negative Anzahl Durchläufe

  Alt 16. Mär 2011, 00:18
Ich hätt jetzt ne Warning erwartet, aber da muckt der Compiler sich echt garnicht
Mit Range Checking allerdings wirfts dir zur Laufzeit eine Exception.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 00:07 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