Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi Bug? (for i := 1 to componente.width) (https://www.delphipraxis.net/3286-delphi-bug-i-%3D-1-componente-width.html)

Maa83 5. Mär 2003 07:28


Delphi Bug? (for i := 1 to componente.width)
 
Also ich hab da wa seltsames festgestellt... vielleicht bin ich auch nur zu doof :)

und zwar hab ich z.B. eine PaintBox und möchte eine for Schleife machen die folgendermaßen aussieht:

Code:
for i := 1 to paintbox1.width do begin
//tue irgendwas
end;
so jetzt sollte er die Schleife solange wiederholen bis width erreicht ist... Delphi macht aber folgendes:

entweder geht Delphi gar nicht in die Schleife rein
oder er ignoriert das Ende der Schleife und zählt einfach weiter und kommt nicht mehr raus...

mach ich was falsch oder ist das ein fieser Delphi-Bug?

das selbe passiert mit der Eigenschaft .Height
Auch wenn ich diese Werte mit Hilfsvariablen zwischenspeichere:
Code:
w := paintbox1.width;
for i := 1 to w do begin
...
end;

janjan 5. Mär 2003 07:38

Bei mir klappt das problemlos:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i:= 1 to PaintBox1.Width do
    begin
      PaintBox1.Canvas.Pixels[i,random(PaintBox1.Height)]:=1;
    end;
end;

Maa83 5. Mär 2003 07:49

mhhh.... :|

kann das vielleicht mal einer mit Delphi6 Enterprise versuchen...
vielleicht hat sich da ja irgendwas eingeschlichen...

ich glaube nicht das ich bei so einer einfachen Anweisung Fehler mache...

komisch ist das aber schon :shock:

janjan 5. Mär 2003 07:54

Ich bin grad auf der Arbeit und hab das mit Delphi 7 getestet, nicht mit Delphi 4.

Ich hab die Vermutung das der Fehler eher innerhalb der Schleife liegt, es wäre hilfreich wenn du den teil mal posten könntest.

MrSpock 5. Mär 2003 08:13

Hallo Maa83,

häufig kommt sowas zustande, wenn (aus Versehen) der Schleifenindex in der Schleife verändert wird.

Maa83 5. Mär 2003 08:19

Dank euch erst mal
aber hilft mir alles nix

i wird nicht verändert!

der Fehler tritt bei mir immer auf egal was ich in der Schleife mache
z.B. auch bei dieser hier:

Code:
x := 0;
for i := 1 to paintbox1.width do begin
    inc(x);
end;
ShowMessage(x);
BUHU :cry:

Ich hab das bei mir daheim und auch im Geschäft getestet (jeweils Delphi6 Enterprise)

City Light 5. Mär 2003 08:53

Hallo Maa83

Ich habe diesen Code mal getestet und läuft bei mir super! Ich habe Delphi 6 Enterprise + update 2 (Build 6.240)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
x,y,i: Integer;
begin
  x := 0;
for i := 1 to paintbox1.width do begin
    inc(x);
end;
ShowMessage(inttostr(x));
end;
Gruß Tino

Maa83 5. Mär 2003 09:06

mhhhh...
kapier ich nicht...

naja vielleicht klappts ja irgendwann Delphi ist sicher sauer auf mich :)

wisst ihr eigentlich wie beschissen 800x600 ist WÜRG
muss ein Programm gerade bei dieser Auflösung testen da unserer Kunden diese Auflöung haben WÄHHHH

also dann wünsch ich noch schönes :coder:

MrSpock 5. Mär 2003 09:41

Hallo Maa83,

füge doch bitte noch einmal folgende Zeile ein uns poste, was ausgegeben wird:

Delphi-Quellcode:
   ShowMessage(IntToStr(paintbox1.width));

Maa83 5. Mär 2003 09:49

es wird die richte Zahl ausgegeben (in diesem Fall 485)
wenn ich die Zahl ganz normal in der Schleife angeben funktioniert es natürlich auch nur mit .width eben nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr.
Seite 1 von 2  1 2      

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