AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Form wird nach dem compilieren nicht angezeigt
Thema durchsuchen
Ansicht
Themen-Optionen

Form wird nach dem compilieren nicht angezeigt

Ein Thema von fox67 · begonnen am 1. Mär 2012 · letzter Beitrag vom 14. Mär 2012
Antwort Antwort
Seite 3 von 4     123 4      
Perlsau
(Gast)

n/a Beiträge
 
#21

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 21:41
Also, mal ganz langsam zum mitschreiben: Du hast eine REPEAT-Schleife, die erst beendet wird, wenn die Variable rschliessen, die du im FormCreate auf FALSE setzt, TRUE geworden ist. Kannst du mir erklären, wo innerhalb deiner Schleife diese Variable den Wert TRUE erhalten soll?

Delphi-Quellcode:
repeat
     case rRichtung of
     1: begin // rRichtung := 1
             rpunkt.Y:= rpunkt.Y +3;
             if rpunkt.Y > rhoehe-33 then rRichtung := 2;
             Sleep(25);
        end;
     2: begin // rRichtung := 2
             rpunkt.Y:= rpunkt.Y -3;
             if rpunkt.Y < 0 then rRichtung := 1;
             Sleep(25);
        end;
     end; // case rRichtung of

     Application.ProcessMessages;
     until rschliessen = true; // wo wird rschließen TRUE???
end;
Eine Endlos-Schleife ist eine Schleife, deren Endbedingung niemals eintritt.
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#22

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 21:47
rschliessen wird true wenn die anwendung geschlossen wird deshalb heisst es ja auch so
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#23

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 22:12
rschliessen wird true wenn die anwendung geschlossen wird deshalb heisst es ja auch so
Was soll dein Programm denn überhaupt machen? Wenn ich deinen Code bei mir laufen lasse, hagelt's nämlich erstmal Zugriffsfehler. Du greifst in FormCreate auf noch nicht initialisierte Objekte zu. Mach das doch in einem Button statt in FormCreate.
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#24

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 22:26
Zitat:
Was soll dein Programm denn überhaupt machen? Wenn ich deinen Code bei mir laufen lasse, hagelt's nämlich erstmal Zugriffsfehler. Du greifst in FormCreate auf noch nicht initialisierte Objekte zu. Mach das doch in einem Button statt in FormCreate.
Auf welche? Mein Programm soll nichts anderes als shapes in form von einem kreis hoch und runter fahren lassen jedemal wenn ich auf den buttonklick ensteht ein neues shape das auch hoch und runter fährt hatt noch keinen wirklichen sinn aber ich will es später vieleicht in einem spiel einsetzen
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#25

AW: Form wird nach dem compilieren

  Alt 2. Mär 2012, 09:11
Auf welche? Mein Programm soll nichts anderes als shapes in form von einem kreis hoch und runter fahren lassen jedemal wenn ich auf den buttonklick ensteht ein neues shape das auch hoch und runter fährt hatt noch keinen wirklichen sinn aber ich will es später vieleicht in einem spiel einsetzen
Wie ich sehe, erstellst du kein Shape oder anderes um auf dem Canvas zu zeichnen:
Delphi-Quellcode:
type
  TPunkt = class(TObject)
    private
    { Private-Deklarationen }
     rRichtung : Integer;
     rhoehe : Integer;
     rpunkt : TPoint;
     rschliessen : Boolean;
// procedure ermmittlehöhe();
     public
    { Public-Deklarationen }
    procedure Bewegung();

  end;

...
Hier fehlen noch der Contructor und eine zeichen-Methode so ungefähr:
Delphi-Quellcode:
type
  TPunkt = class(TObject)
    private
    { Private-Deklarationen }
     rRichtung : Integer;
     rhoehe : Integer;
     rpunkt : TPoint;
     rschliessen : Boolean;
// procedure ermmittlehöhe();
     public
    { Public-Deklarationen }
    procedure Bewegung();
    constructor Create();
    procedure zeichnen(aCanvas : TCanvas);

  end;

....

constructor TPunkt.Create();
begin
    // punkte initialisieren und vielleicht Farbe noch setzen
end;

procedure TPunkt.zeichnen(aCanvas : TCanvas);
begin
    aCanvas.brush.color := clRed; // ?
    aCanvas.ellipse(deine TPunktkoordinaten);
end;
...
Ich hoffe ich konnte dir bisschen auf die Sprünge helfen
Coffeecoder
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#26

AW: Form wird nach dem compilieren

  Alt 2. Mär 2012, 13:24
Nein mit der Classe TPunkt will ich keine Shape zeichnen sie soll lediglich die x oder y coordinate eines objektes aus einer anderen classe veränder so das das object eben hoch und runter fährt(oder von links nach rechts und umgekehrt).
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#27

AW: Form wird nach dem compilieren

  Alt 3. Mär 2012, 10:51
Delphi-Quellcode:
unit test;

interface

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

type
  TPunkt = class(TObject)
   rTimer : TTimer;
   procedure rTimerTimer(Sender: TObject);
    private
    { Private-Deklarationen }
     rRichtung : Integer;
     rhoehe : Integer;
     rpunkt : TPoint;
     rschliessen : Boolean;

// procedure ermmittlehöhe();
     public
    { Public-Deklarationen }
    constructor Create;
    destructor Destroy; override;
    procedure Bewegung();
  end;


  TForm1 = class(TForm)
    Timer1: TTimer;
    Label1: TLabel;
    Shape1: TShape;
    Button1: TButton;
    Timer3: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure onclose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    
  private
    { Private-Deklarationen }
    punkt : TPunkt;
    sh : array of TShape;
    shpos : array of TPunkt;
    anzahl : integer;
  public
    { Public-Deklarationen }
    procedure erstellen();
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{procedure TPunkt.ermmittlehöhe;
begin
  rhoehe := form1.ClientHeight;
  Bewegung();
end;}


procedure TPunkt.Bewegung();
var
i : integer;
begin

// repeat
  case rRichtung of
 1:
  begin
    rpunkt.Y:= rpunkt.Y +3;
    if rpunkt.Y > rhoehe-33 then rRichtung := 2;

    Sleep(25);
  end;
 2: begin
    rpunkt.Y:= rpunkt.Y -3;

    if rpunkt.Y < 0 then rRichtung := 1;
    Sleep(25);
  end;

 end;
  Application.ProcessMessages;
  //until rschliessen = true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 punkt := TPunkt.Create;
 //punkt.ermmittlehöhe;

 end;

procedure TForm1.onclose(Sender: TObject; var Action: TCloseAction);

begin
timer1.Enabled:=false;
timer3.Enabled := false;
punkt.Free;
punkt.rschliessen := true;
setlength(sh, 0);
setlength(shpos, 0);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
shape1.Top:= punkt.rpunkt.Y;
label1.Caption:=inttostr(punkt.rpunkt.Y);
end;



procedure TForm1.Timer3Timer(Sender: TObject);
var index : word ;
begin
for index := 0 to anzahl do
 begin
  sh[index].Top := shpos[index].rpunkt.Y;
// sh2[index].Bewegung;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var X: Integer;
begin
  x:= anzahl+1;
  setLength(sh, x);
  setLength(shpos, x);
  erstellen();
end;


procedure TForm1.erstellen;
begin
  shpos[anzahl]:= TPunkt.Create;
  sh[anzahl]:= TShape.Create(self);
  sh[anzahl].Parent:= self;
  sh[anzahl].Brush.Color:= clred;
  sh[anzahl].Shape:= stcircle;
  sh[anzahl].Top :=shpos[anzahl].rpunkt.Y;
  sh[anzahl].Left := random(200);
  sh[anzahl].Height:= 33;
  sh[anzahl].Width:= 33;
  shpos[anzahl].rTimer.Enabled:= true;
  timer3.Enabled:= true;
end;

constructor TPunkt.Create;
begin
 rpunkt.Y := 0;
 rRichtung:= 1;
 rhoehe := form1.ClientHeight;
 rtimer := TTimer.Create(nil);
 rtimer.Interval := 25;
 rtimer.Enabled := true;
 rtimer.OnTimer := rTimerTimer;
end;

procedure TPunkt.rTimerTimer(Sender : TObject);
begin
Bewegung();
end;

destructor TPunkt.Destroy;
begin
  rtimer.Enabled := false;
  rtimer.Free;
end;
end.
So ich hab jetzt an meinem Programm etwas rum probiert und verbessert jetzt kommen beim Schliessen keine Fehlermeldungen mehr. Wenn ich nun auf den Button klick um das erste shape zu erzeugen Funktioniert alles super es erscheint und fährt so wie es soll hoch und runter. Klick ich nochmal auf den Button bleibt das erste Shape stehen(was es nicht soll) und das Kontroll Shape wird langsamer(das wird immer schlimmer um so öfter man auf den Button klickt um neue Shapes zu erstellen). Ausserdem wen man jetzt die Anwendung schliessen will bleibt das programm einfach stehen.
Was hab ich falsch gemacht

Geändert von mkinzler (14. Mär 2012 um 20:17 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#28

AW: Form wird nach dem compilieren

  Alt 13. Mär 2012, 18:04
Also ich hab mal weiter experimentiert und jetzt geschafft das das Programm nich immer langsamer wird das andere Problem bleibt aber bestehen. Hier Hab ich mal die Projekt datein http://dl.dropbox.com/u/62039624/Delphi%20projekt.zip

Gruß Arni
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#29

AW: Form wird nach dem compilieren

  Alt 13. Mär 2012, 19:24
Weiß keiner ne Antwort?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#30

AW: Form wird nach dem compilieren

  Alt 13. Mär 2012, 20:07
Tipp: Das Puschen ist innerhalb von 24 Stunden verboten sehr ungern gesehn.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 01:10 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