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
fox67

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

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 19:25
ja baer wie verlangsamt man eine endlos schleife????
  Mit Zitat antworten Zitat
fox67

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

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 19:36
habs jetzt mit slepp gemacht nur vergessen ins forum zu schreiben trotzdem danke
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 19:38
habs jetzt mit slepp gemacht nur vergessen ins forum zu schreiben trotzdem danke
Dürfen wir mal deine jetzt nicht mehr endlos laufende Schleife sehen?
  Mit Zitat antworten Zitat
fox67

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

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 20:32
So jetzt hab ich mein Program beihnah zu ende Programmiert und ein Fehler mit wahrscheinlich gleicher ursache tritt auf.
Code:
unit test;

interface

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

type
  TPunkt = class(TObject)
    private
    { Private-Deklarationen }
     rRichtung : Integer;
     rhoehe : Integer;
     rpunkt : TPoint;
     rschliessen : Boolean;
//     procedure ermmittlehöhe();
     public
    { Public-Deklarationen }
    procedure Bewegung();

  end;


  TForm1 = class(TForm)
    Timer1: TTimer;
    Timer2: 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 Timer2Timer(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
 form1.Timer2.Enabled :=false;
 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;
 punkt.rpunkt.Y:= 0;
 punkt.rRichtung:=1;
 punkt.rhoehe:=form1.ClientHeight;
 punkt.rschliessen := false;
 timer2.Enabled:=true;

  end;

procedure TForm1.onclose(Sender: TObject; var Action: TCloseAction);
var
index :word;
begin
punkt.Free;
punkt.rschliessen := true;
for index := 0 to anzahl do
sh[index].Free;
shpos[index].Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
shape1.Top:= punkt.rpunkt.Y;
label1.Caption:=inttostr(punkt.rpunkt.Y);
end;
                                     
procedure TForm1.Timer2Timer(Sender: TObject);
begin
punkt.Bewegung ;
timer3.Enabled:=true;
timer2.Enabled :=false;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
var index : word ;
begin
for index := 0 to anzahl do
  sh[index].Top := shpos[index].rpunkt.Y;
//  sh2[index].Bewegung;
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].Bewegung();
end;
end.
wenn ich jetzt auf den button klick um mir den ersten kreis zu erstellen bewegt sich nichts weder der kreis noch die shapevom timer1 (die nur zur kontrolle dient)

Geändert von fox67 ( 1. Mär 2012 um 20:34 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 20: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
 
#6

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 20: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
 
#7

AW: Form wird nach dem compilieren

  Alt 1. Mär 2012, 21: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
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 03:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz