AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ball Problem , kommischer Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Ball Problem , kommischer Fehler

Ein Thema von Penelopee · begonnen am 18. Okt 2005 · letzter Beitrag vom 18. Okt 2005
Antwort Antwort
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#1

Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 19:36
Ich möchte mit Canvas 4 Bälle prpgrammieren , die sich auf einer leinwand bewegen.Wo ist mein Fehler???
Delphi-Quellcode:
Interface
  Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,
  StdCtrls;

  Type TForm1 = Class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    BStop: TButton;
    Timer2: TTimer;
    BStart: TButton;
    Timer3: TTimer;
    Timer4: TTimer;

    Procedure Timer1Timer(Sender: TObject);
    procedure BStartClick(Sender: TObject);
    procedure BStopClick(Sender: TObject);


  End;

  Var Form1: TForm1;

Implementation
  {$R *.dfm}


  Var
  x1,y1,DeltaX1,Deltay1,
  x2,y2,DeltaX2,Deltay2,
  x3,y3,DeltaX3,Deltay3,
  x4,y4,DeltaX4,Deltay4: integer;
  Farbe1,Farbe2,Farbe3,Farbe4, TischFarbe: tColor;
  start:boolean;
  Image1:TImage;



  procedure AendereOrt(var x,y,DeltaX,Deltay:integer);
  begin
      If x < 10
      Then DeltaX := -DeltaX
      Else If x >= Image1.Width - 80
      Then DeltaX := -DeltaX;
      If y < 10 Then Deltay := -DeltaY
      Else If y >= Image1.Height - 80
      Then Deltay := -DeltaY;
      x:=x+DeltaX;
      y:=y+Deltay;
  end;

  procedure Zeichne(x,y,DeltaX,Deltay:integer; Farbe:tColor);
  begin
  x:=x+DeltaX;
  y:=y+Deltay;
  Image1.Canvas.Ellipse(x,y,x+50,y+50);
  end;


  Procedure TForm1.Timer1Timer(Sender: TObject);
    Begin

    
    Zeichne(x1,y1,DeltaX1,DeltaY1, Farbe1);
    Zeichne(x2,y2,DeltaX2,DeltaY2, Farbe2);
    Zeichne(x3,y3,DeltaX3,DeltaY3, Farbe3);
    Zeichne(x4,y4,DeltaX4,DeltaY4, Farbe4);

    End;

procedure TForm1.BStartClick(Sender: TObject);
begin
start:=true;
TischFarbe:=clgreen;
x1:=100 ;
y1:=100 ;
DeltaX1:=10;
DeltaY1:=10;
Farbe1:=clBlack;

x2:=250 ;
y2:=400 ;
DeltaX2:=5;
DeltaY2:=5 ;
Farbe2:=clyellow;

x3:=120 ;
y3:=220 ;
DeltaX3:=15;
DeltaY3:=15;
Farbe3:=clBlue;

x4:=20 ;
y4:=140 ;
DeltaX4:=20;
DeltaY4:=20 ;
Farbe4:=clfuchsia;
end;

procedure TForm1.BStopClick(Sender: TObject);
begin
start:=false;

end;
der Fehler der kommt:
Project xxxx raised exception class yyyyy with message 'zzzzzz'.

Process stopped. Use Step or Run to continue.


Ichbin echt ratlos!!
Danke!!!
  Mit Zitat antworten Zitat
soulflare

Registriert seit: 30. Aug 2005
12 Beiträge
 
#2

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 19:41
Es wäre gut wenn du sagen könntest was in yyyyy und zzzzz steht...
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 19:55
Schau Dir mal das Image1 genauer an. Kommt naemlich doppelt vor. Einmal in der Form-Klasse und dann nochmal als globale Variable.

Am besten pack mal diese ganzen globalen Variablen in die Klasse mit rein und auch die Prozeduren Zeichne und AendereOrt. Das ist auf jeden Fall der Fehler, der Dir momentan zu schaffen macht.

Gruss, Lizzy
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#4

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 19:58
ich weiß nich ganz was du meinst , kannst du mal bitte meinen Quelltext umstellen , sodass es richtig ist und ich sehe was du meinst.
Vielen Dank!!
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 20:10
Okay. Hab's mal eben mit der "heissen Nadel" umgestrickt ;-)

Das laeuft sicherlich noch nicht so, wie Du wolltest, aber der Fehler ist schonmal raus :)

Delphi-Quellcode:
unit Unit1;

Interface
  Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,
  StdCtrls;

  Type TForm1 = Class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    BStop: TButton;
    Timer2: TTimer;
    BStart: TButton;
    Timer3: TTimer;
    Timer4: TTimer;

    Procedure Timer1Timer(Sender: TObject);
    procedure BStartClick(Sender: TObject);
    procedure BStopClick(Sender: TObject);
    procedure Zeichne(x,y,DeltaX,Deltay:integer; Farbe:tColor);
    procedure AendereOrt(var x,y,DeltaX,Deltay:integer);

    private
      x1,y1,DeltaX1,Deltay1,
      x2,y2,DeltaX2,Deltay2,
      x3,y3,DeltaX3,Deltay3,
      x4,y4,DeltaX4,Deltay4: integer;
      Farbe1,Farbe2,Farbe3,Farbe4, TischFarbe: tColor;
      start:boolean;
    End;

  Var Form1: TForm1;

Implementation
  {$R *.dfm}

  procedure TForm1.AendereOrt(var x,y,DeltaX,Deltay:integer);
  begin
      If x < 10
      Then DeltaX := -DeltaX
      Else If x >= Image1.Width - 80
      Then DeltaX := -DeltaX;
      If y < 10 Then Deltay := -DeltaY
      Else If y >= Image1.Height - 80
      Then Deltay := -DeltaY;
      x:=x+DeltaX;
      y:=y+Deltay;
  end;

  procedure TForm1.Zeichne(x,y,DeltaX,Deltay:integer; Farbe:tColor);
  begin
  x:=x+DeltaX;
  y:=y+Deltay;
  Image1.Canvas.Ellipse(x,y,x+50,y+50);
  end;


  Procedure TForm1.Timer1Timer(Sender: TObject);
    Begin


    Zeichne(x1,y1,DeltaX1,DeltaY1, Farbe1);
    Zeichne(x2,y2,DeltaX2,DeltaY2, Farbe2);
    Zeichne(x3,y3,DeltaX3,DeltaY3, Farbe3);
    Zeichne(x4,y4,DeltaX4,DeltaY4, Farbe4);

    End;

procedure TForm1.BStartClick(Sender: TObject);
begin
start:=true;
TischFarbe:=clgreen;
x1:=100 ;
y1:=100 ;
DeltaX1:=10;
DeltaY1:=10;
Farbe1:=clBlack;

x2:=250 ;
y2:=400 ;
DeltaX2:=5;
DeltaY2:=5 ;
Farbe2:=clyellow;

x3:=120 ;
y3:=220 ;
DeltaX3:=15;
DeltaY3:=15;
Farbe3:=clBlue;

x4:=20 ;
y4:=140 ;
DeltaX4:=20;
DeltaY4:=20 ;
Farbe4:=clfuchsia;
end;

procedure TForm1.BStopClick(Sender: TObject);
begin
start:=false;

end;
end.
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#6

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 21:33
ja danke der Fehler ist behoben , aber funktionieren tut es nicht.Ich finde da aber keinen Fehler!!Der Fehler muss doch in der Zeichne Procedur liegen oder?Ich will die Zeiche Procedur für einen Ball durchführen und dann für alle anderen Bälle übernehmen!!Wo ist der Fehler??
Vielen Dank!!!
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 21:51
Zitat von Penelopee:
ja danke der Fehler ist behoben , aber funktionieren tut es nicht.Ich finde da aber keinen Fehler!!Der Fehler muss doch in der Zeichne Procedur liegen oder?Ich will die Zeiche Procedur für einen Ball durchführen und dann für alle anderen Bälle übernehmen!!Wo ist der Fehler??
Vielen Dank!!!
Du solltest vielleicht mal Dein komplettes Projekt hier reinstellen und etwas genauer schreiben, was passiert bzw. nicht passiert. Wenn ich z.B. ein leeres Projekt erstelle, die entsprechenden Komponenten (Timer1 - Timer4, Image1 und die beiden Buttons) plaziere und den von mir bearbeiteten Quellcode einfuege passiert erstmal gar nix. Wenn ich dann den OnTimer-Event von Timer1 mit der entsprechenden procedure per Objektinspektor verbinde, dann erscheint beim ersten Timer-Event eine weisse Flaeche mit einem Kreis. Klick ich dann auf BStart, dann sehe ich 4 Kreise. Eigentlich alles, wie man es bei dem Code erwarten wuerde. Die Prozedur "AendereOrt" wird nirgendwo aufgerufen, also werden die Kreise auch immer am selben Ort gezeichnet.

Ach ja... und nebenbei. Du musst auf jeden Fall zwischendurch mal das Canvas loeschen (oder andere Massnahmen ergreifen, damit der urspruengliche Kreis verschwindet, bevor der neue gezeichnet wird) ;)
  Mit Zitat antworten Zitat
Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#8

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 22:02
ich zeig euch jetzt mal , wie das ganze aussehen soll.(Im Anhang)Hier sind jetzt aber blos 3 Bälle zu sehen , aber ob 3 oder 4 is ja egal.Ich muss jetzt meinen Quelltext so umstellen , dass es wie hier aussieht , mehr will ich nicht!!
Danke für die Hilfe!!!!
Angehängte Dateien
Dateityp: exe project1_385.exe (377,0 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Ball Problem , kommischer Fehler

  Alt 18. Okt 2005, 22:27
Zitat von Penelopee:
ich zeig euch jetzt mal , wie das ganze aussehen soll.(Im Anhang)Hier sind jetzt aber blos 3 Bälle zu sehen , aber ob 3 oder 4 is ja egal.Ich muss jetzt meinen Quelltext so umstellen , dass es wie hier aussieht , mehr will ich nicht!!
Danke für die Hilfe!!!!
Wie erwaehnt :

1. Komplettes Delphi-Projekt als Anhang
2. Genaue Fehlerbeschreibung
3. Was fehlt noch ?

zu 1 :
In der einzelnen Unit fehlen Informationen. Alleine daraus kann man nicht sehen, was sonst noch im gesamten Projekt passiert. Welche Ereignisse sind wie verknuepft ?

zu 2 :
Ich hab ja grob geschildert, wie's bei mir aussieht. Was denkst Du muesste bei Deinem Code dargestellt werden ?

zu 3 :
Eigentlich siehe 2. Nirgendwo wird z.B. die Hintergrundfarbe des TImage irgendwo zugewiesen, nirgendwo wird die Position der Kreise veraendert und nirgendwo ...
Das Programm macht genau, was ich nach dem Quelltextstudium erwarten wuerde und es muesste noch viel mehr passieren, damit es sich wie Dein Anhang verhalten wuerde.
  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:16 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