AGB  ·  Datenschutz  ·  Impressum  







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

Compiler-Fehler: "Downto" statt "To"

Ein Thema von gordon freeman · begonnen am 23. Mär 2005 · letzter Beitrag vom 23. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#1

Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:03
Hi Leute,

hab mir gerade mal die Werte von i in:

Delphi-Quellcode:
var BA : array[97..252] of integer;

(...)

procedure TForm2.BALeeren;
var i:integer;
begin
  for i:=97 to 252 do
    BA[i] := 0;
end;
angesehen.

Hab Strg+Alt+W gedrückt und die Variable i eingetragen. Als ersten Wert wird i mit 156 belegt. Und dann wird i runtergezählt auf 0!!!
Was stimmt denn jetzt wieder nicht

Dazu muss ich aber sagen, dass die Prozedur perfekt arbeitet, dass heißt, im gesamten Array steht im Endeffekt 0.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:04
Hi,

das liegt an der Compiler Optimierung. Rückwärtszählen geht schneller als vorwärtszählen und wenn es egal ist, wie rum gezählt wird, zählt der Delphi Compiler (bei eingeschalteter) Optimierung rückwärts.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:06
Das ist die Compileroptimierung. der mach daraus das:
Delphi-Quellcode:
for i:=156 downto 0 do
    BA[i + 97] := 0;
Weils runterzählen einfach schneller geht ...
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:10
Okay, wieder was gelernt, thx!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:12
Da muss ich kurz korrigieren:
Zitat von jfheins:
Weils runterzählen einfach schneller geht ...
Das Zählen geht genausoschnell. Allerdings ist ein Vergleich auf 0 schneller als ein Vergleich auf 156, und deshalb wird der Code so optimiert.

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 mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:15
Zitat von alcaeus:
Da muss ich kurz korrigieren:
Zitat von jfheins:
Weils runterzählen einfach schneller geht ...
Das Zählen geht genausoschnell. Allerdings ist ein Vergleich auf 0 schneller als ein Vergleich auf 156, und deshalb wird der Code so optimiert.

Greetz
alcaeus
Ok, dann könnte man es so formulieren:

Das Rückwätszählen läuft schneller ab, weil ein Vergleich auf 0 schneller ist, als auf eine andere Zahl.

mfG
miraqe228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 10:17
Ich glaube aberZeroMemory (@BA, length (BA) * SizeOf (Integer)) könnte fast noch schneller sein ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 17:16
Zitat von mirage228:
Ok, dann könnte man es so formulieren:

Das Rückwätszählen läuft schneller ab, weil ein Vergleich auf 0 schneller ist, als auf eine andere Zahl.
Nein. Aber wenn durch eine Rechenoperation ein Register den Wert 0 erhält, wird das Zero-Flag automatisch gesetzt. Dadurch spart man sich ein CMP.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 17:44
optimierung abstellen ist der erfahrung nach das beste
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Compiler-Fehler: "Downto" statt "To"

  Alt 23. Mär 2005, 18:08
Zitat von computer-glossar.de:
optimierung abstellen ist der erfahrung nach das beste
Wozu soll das den gut sein?
Ob so eine Schleife nun vor- oder rückwärts läuft, macht in dem vorgestellten Fall keinen Unterschied.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:45 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