Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi programm bricht beim start ab (https://www.delphipraxis.net/68495-programm-bricht-beim-start-ab.html)

nobody_anfänger 30. Apr 2006 16:15


programm bricht beim start ab
 
das programm soll einen ball erstellen, der sich über den bildschirm bewegt. mein problem ist jetzt, dass das programm immer abricht, wenn ich es starte.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TSpielfeld = class(TForm)
    Bild: TImage;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    end;
  TBall = class x,y,vx,vy,r : integer;
    farbe: tcolor;
    procedure bewegdich;
    procedure zeigdich;
    procedure init(fneu:tcolor; xneu,yneu,vxneu,vyneu,rneu:integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Spielfeld: TSpielfeld;
  Ball:TBall;
  x1,x2,y1,y2,t:integer;

implementation

procedure tball.init(fneu:tcolor;xneu,yneu,vxneu,vyneu,rneu:integer);
  begin
    farbe:=fneu;
    x:=xneu;
    y:=yneu;
    vx:=vxneu;
    vy:=vyneu;
    r:=rneu;
  end;

procedure tball.zeigdich;
  begin
    Spielfeld.Bild.Canvas.Brush.Color:=farbe;
    Spielfeld.Bild.Canvas.Ellipse(x1,y1,x2,y2);
  end;

procedure tball.bewegdich;
  begin
    x:=x+vx;
    y:=y+vy;
    x1:=x-r;
    x2:=x+r;
    y1:=y-r;
    y2:=y+r;
  end;

procedure TSpielfeld.Timer1Timer(Sender: TObject);
  begin
    ball.zeigdich;
    ball.bewegdich;
    ball.zeigdich;
  end;

procedure TSpielfeld.FormCreate(Sender: TObject);
  begin
    bild.Canvas.Brush.Color:=clwhite;
    bild.Canvas.Pen.Width:=2;
    bild.Canvas.Brush.Style:=bssolid;
    bild.Canvas.Pen.Mode:=pmNOTXOR;
    ball.init(clred,100,200,-4,3,20);
    ball.zeigdich;
  end;


end.

Klaus01 30. Apr 2006 16:21

Re: programm bricht beim start ab
 
wird Dein Ball auch irgendwo erstellt.
z.B. ball := TBall.create?

Könnte z.B. zum Programmabruch führen.

Grüße
Klaus

nobody_anfänger 30. Apr 2006 16:25

Re: programm bricht beim start ab
 
ich hab irgendwo gelesen, dass ich am ende des progs
initialisation
ball:=Tball.create;
finalisation
ball:destroy;

einbinden muss, ich hab aber leide keine ahnung wie

Klaus01 30. Apr 2006 16:31

Re: programm bricht beim start ab
 
das kannst Du auch im
Form1.create (ball:=TBall.create) und
im Form1.close (ball.free) machen.

Im Prinzip mußt Du eine Instanz des Objects erstellen bevor Du
es zum erstenmal benutzen willst.
Freigeben solltest Du es wenn Du es nicht mehr benutzen willst.

Grüße
Klaus

nobody_anfänger 30. Apr 2006 16:35

Re: programm bricht beim start ab
 
der feheler besteht trotzdem noch. als fehler anzeige bekomme ich
"Resource TSpielfeld not found"

Klaus01 30. Apr 2006 16:38

Re: programm bricht beim start ab
 
kannst Du mal Deine dpr Datei hier anhängen.

Grüße
Klaus

nobody_anfänger 30. Apr 2006 16:40

Re: programm bricht beim start ab
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier is die dpr

mkinzler 30. Apr 2006 16:40

Re: programm bricht beim start ab
 
Du hast eine eigene Formular.Klasse TSpielfeld deklariert. Der (geerbte) Konstruktor versucht nun die Werte der Eigenschaften aus der entsprechenden .dfm zu laden. Existieren die Persistenzdaten der Klasse in Unit.dfm?

Hawkeye219 30. Apr 2006 16:43

Re: programm bricht beim start ab
 
Hallo,

beim Bearbeiten des Quelltextes hast du wohl die Zeile mit der Formulareinbindung gelöscht. Ändere den Teil hinter "implementation" mal so ab:

Delphi-Quellcode:
implementation

{$R *.dfm}  // <<-- diese Zeile fehlt bei dir!

procedure tball.init(fneu:tcolor;xneu,yneu,vxneu,vyneu,rneu:integer);
Gruß Hawkeye


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