Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi For-Schleife und inc(x,1) (https://www.delphipraxis.net/93638-schleife-und-inc-x-1-a.html)

Tommy1988 8. Jun 2007 18:34


For-Schleife und inc(x,1)
 
Folgende Probleme:
Ich habe x so deklariert:

Delphi-Quellcode:
x : Integer = 1;
Ganz oben bei
Delphi-Quellcode:
var Form1: TForm1;
x : Integer = 1;
Mit folgender Schleife zähle ich x von 1 bis 5 hoch:
Delphi-Quellcode:
for x := 1 to 5 do
 begin
  inc(x,1);
  Caption := IntToStr(x); // dient nur dazu, dass ich die zahl SEHEN kann
 end;

So..

Mit Canvas lass ich "malen". Von Punkt zu Punkt:
Delphi-Quellcode:
// Ein Case, von 1 bis 5 
  1: begin
      Image.Canvas.TextOut(20, 30, '1 '+IntToStr(x));
// Strich Nr. 1 erfolgt, Zahl 1 (x) wird daneben geschrieben                  <=
// Ergebnis:                                                                  <=
// 1 (1)                                                                      <=
      Image.Canvas.MoveTo(30, 30);
    end;
....
  3: begin
      Image.Canvas.TextOut(40, 40, '3 '+IntToStr(x));
// Ab hier geht x verloren. Es sollte angezeigt werden                        <=
// 3 (2)                                                                      <=
// Angezeigt wird lediglich "3"                                               <=
                                                                               
// WIESO?                                                                      <=
      Image.Canvas.MoveTo(50, 40);
    end;

Luckie 8. Jun 2007 18:37

Re: For-Schleife und inc(x,1)
 
Ich rate mal. Fehlermledung: Die Laufvariable muss eine lokale Variable sein.

Phoenix 8. Jun 2007 18:37

Re: For-Schleife und inc(x,1)
 
Die Schleife zählt i automatisch hoch.
Du kannst / darfst die Zählvariable in der For-schleife nicht mehr verändern.

Tommy1988 8. Jun 2007 18:38

Re: For-Schleife und inc(x,1)
 
@ Luckie: Richtig:

Habs jetzt so gemacht.

Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  inc(x,1);
  Caption := IntToStr(x);
if x = 5 then
 begin
   Timer2.Enabled := False
 end;
end;
Aber wieso wird denn bei der Sache mit dem Canvas nicht das x drangehängt ?

Tommy1988 8. Jun 2007 18:45

Re: For-Schleife und inc(x,1)
 
Verbesserung zu:
Delphi-Quellcode:
// Ein Case, von 1 bis 5 
  1: begin
      Image.Canvas.TextOut(20, 30, '1 '+IntToStr(x));
// Strich Nr. 1 erfolgt, Zahl 1 (x) wird daneben geschrieben                  <=
// Ergebnis:                                                                  <=
// 1 (1)                                                                      <=
      Image.Canvas.MoveTo(30, 30);
    end;
....
  3: begin
      Image.Canvas.TextOut(40, 40, '3 '+IntToStr(x));
// Ab hier geht x verloren. Es sollte angezeigt werden                        <=
// 3 (2)                                                                      <=
// Angezeigt wird lediglich "3"                                               <=
                                                                               
// WIESO?                                                                      <=
      Image.Canvas.MoveTo(50, 40);
    end;
So sollte es richtig erklärt sein:

Es gibt 5 Punkte.

Wird Punkt 1 angesteuert, wird eine 1 und (1) für "ansteuerung 1" dazugeschrieben.

wird danach aber Punkt 3 angesteuert, wird eine 3-für Punkt 3, und eine (2) für "ansteuerung 2" dazugeschieben.

so sollte es sein, laut meinem code, aber es funkt nicht.

DeddyH 8. Jun 2007 20:24

Re: For-Schleife und inc(x,1)
 
Hallo, kannst Du mal ein bissel mehr Code posten? So weiß doch niemand, wann was aufgerufen wird. Du hast einen Timer, der eine globale Variable (*tztz*) inkrementiert, und dann soll etwas gezeichnet werden. Wo "sagst" Du das denn?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 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