AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi führt Quellcode nicht aus

Offene Frage von "chat_4_free_desperados"
Ein Thema von chat_4_free_desperados · begonnen am 20. Jun 2008 · letzter Beitrag vom 20. Jun 2008
Antwort Antwort
chat_4_free_desperados

Registriert seit: 20. Jun 2008
1 Beiträge
 
#1

Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 01:32
Hallo Leute

Ich soll für die Schule zu Hause so eine Art würfel Spiel mit mehreren Formularen machen. Das Würfelspiel heißt Crap oder auch CRAPS. nun hab ich soweit schon einiges fertig und muss feststellen dass Delphi bei einem Button den Quelltext nicht mehr ausführt. Dieser Button soll im Formular 5 sein und soll bewirken dass das ganze Spiel geschloßen wird und die Projekt1.exe aus dem Speicher verschwindet. Nur dies passiert nicht, hab nun zu übungszwecken denn Button so programmiert das mir eine Message angezigt wird, nur selbst dies klappt nicht. Und mit Hilfe von F7 hab ich gesehen das Delphi gar nicht den Quelltext an dieser Stelle liest. Kann mir jemand Helfen? Der Fehler tritt in Unit 5 auf, wenn BitBtn3 gedrückt wird. Im Anhang liegt das Würfelspiel gepackt in einem ZIP file.

Delphi-Quellcode:
UNIT Unit1;

interface

//-------------------- ggf Uses-Liste anpassen ! --------------------
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
     Forms, Dialogs, StdCtrls, Buttons;
//uses mTForm ??

type
  TForm1 = class(TForm)

  // published Attribute
    BitBtn1 : TBitBtn;
    BitBtn2 : TBitBtn;
    BitBtn3 : TBitBtn;
    Label1 : TLabel;

  // published Methoden
    procedure BitBtn1Click (Sender: TObject); // nicht überschreibbar
    procedure BitBtn3Click (Sender: TObject); // nicht überschreibbar

   end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.DFM}

//+---------------------------------------------------------------------
//| TForm1: Methodendefinition
//+---------------------------------------------------------------------

//-------- BitBtn1Click (published) ---------------------------------------
procedure TForm1.BitBtn1Click (Sender: TObject);
begin
form2.show;
form1.hide;
end;

//-------- BitBtn3Click (published) ---------------------------------------
procedure TForm1.BitBtn3Click (Sender: TObject);
begin
close;
end;

end.
Delphi-Quellcode:
UNIT Unit2;

interface

//-------------------- ggf Uses-Liste anpassen ! --------------------
uses Windows, Messages, SysUtils, Variants, Classes, Graphics,
     Controls, Forms, Dialogs, StdCtrls, Buttons, unit1
     ;
//uses mTForm ??



type
  TForm2 = class(TForm)

  // published Attribute
    BitBtn1 : TBitBtn;
    BitBtn2 : TBitBtn;
    Edit1 : TEdit;
    Edit2 : TEdit;
    Label1 : TLabel;
    Label2 : TLabel;

  // published Methoden
    procedure BitBtn1Click (Sender: TObject); // nicht überschreibbar
    procedure BitBtn2Click (Sender: TObject); // nicht überschreibbar
    procedure FormCreate (Sender: TObject); virtual; // nicht überschreibbar

   end;

var
  Form2: TForm2;
  Kapital,einsatz:integer;
implementation

uses Unit3;

{$R *.DFM}

//+---------------------------------------------------------------------
//| TForm2: Methodendefinition
//+---------------------------------------------------------------------

//-------- BitBtn1Click (published) ---------------------------------------
procedure TForm2.BitBtn1Click (Sender: TObject);
begin
Kapital:=strtoint(edit1.text);
If Kapital=0 then
  ShowMessage('Lüg mich doch nicht an !')
else
begin
Bitbtn1.Visible:=false;
Bitbtn1.Enabled:=false;
Label2.Visible:=true;
Edit2.Visible:=true;
Edit2.SetFocus;
Bitbtn2.Visible:=true;
Bitbtn2.Enabled:=true;
end;
end;

//-------- BitBtn2Click (published) ---------------------------------------
procedure TForm2.BitBtn2Click (Sender: TObject);
begin
Einsatz:=strtoint(edit2.Text);
if (Einsatz<=0) or (Einsatz>Kapital) then
 ShowMessage('Einsatz muss größer als 0 sein und darf nicht größer als dein gesamtes Kapital sein. Dein Kapital beträgt:' + IntToStr(Kapital) + '')
else
begin
form3.show;
form2.hide;
end;
end;

//-------- FormCreate (published) -----------------------------------------
procedure TForm2.FormCreate (Sender: TObject);
begin
edit1.Text:='0';
edit2.Text:='0';
label2.Visible:=false;
edit2.visible:=false;
BitBtn2.Visible:=false;
bitbtn2.Enabled:=false;

end;

end.
Delphi-Quellcode:
UNIT Unit3;

interface

//-------------------- ggf Uses-Liste anpassen ! --------------------
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
     Forms, Dialogs, StdCtrls, Buttons, unit1, unit2
     ;
//uses mTForm ??



type
  TForm3 = class(TForm)

  // published Attribute
    BitBtn1 : TBitBtn;
    Edit1 : TEdit;
    Edit2 : TEdit;
    Label1 : TLabel;
    Label2 : TLabel;
    Edit3: TEdit;
    Label3: TLabel;
    Edit4: TEdit;
    Label4: TLabel;
    Edit5: TEdit;
    BitBtn2: TBitBtn;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Label5: TLabel;
    Label6: TLabel;

  // published Methoden

    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject); // nicht überschreibbar

   end;

var
  Form3: TForm3;
  wurfel1,wurfel2,wurfel3,wurfel4,wurfelgesamt,wurfelgesamt2:integer;

implementation

uses Unit4, Unit5, Unit6;

{$R *.DFM}

//+---------------------------------------------------------------------
//| TForm3: Methodendefinition
//+---------------------------------------------------------------------

//-------- FormCreate (published) -----------------------------------------
procedure TForm3.FormShow(Sender: TObject);
begin
edit3.text:='';
edit4.text:='';
edit5.text:='';
edit6.text:='';
edit7.text:='';
edit8.text:='';
BitBtn1.Visible:=true;
randomize;
Edit1.Text:=inttostr(Kapital);
Edit1.Enabled:=false;
Edit2.Text:=inttostr(Einsatz);
Edit2.Enabled:=false;
BitBtn2.Visible:=false;
edit6.Visible:=false;
edit7.visible:=false;
edit8.Visible:=false;
label5.Visible:=false;
label6.visible:=false;

end;

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
kapital:=kapital-einsatz;
if Kapital<0 then
begin
Form4.show;
Form3.hide;
end
else
Edit1.Text:=inttostr(Kapital);
wurfel1:=random(6)+1;
wurfel2:=random(6)+1;
wurfelgesamt:=wurfel1+wurfel2;
edit3.Text:=inttostr(wurfel1);
edit4.Text:=inttostr(wurfel2);
edit5.Text:=inttostr(wurfelgesamt);
if (wurfelgesamt=7) or (wurfelgesamt=11) then
 begin
  Kapital:=Kapital+(3*Einsatz);
  Edit1.Text:=inttostr(Kapital);
  Form5.show;
  form3.hide;

  end
else
  if (wurfelgesamt=2) or (wurfelgesamt=3) or (wurfelgesamt=12) then
   begin
    Form6.show;
    Form3.Visible:=true;
   end
  else
  begin
BitBtn1.Visible:=false;
BitBtn2.Visible:=true;
edit6.Visible:=true;
edit7.visible:=true;
edit8.Visible:=true;
label5.Visible:=true;
label6.visible:=true;
end;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
wurfel3:=random(6)+1;
wurfel4:=random(6)+1;
wurfelgesamt2:=wurfel3+wurfel4;
edit6.Text:=inttostr(wurfel3);
edit7.Text:=inttostr(wurfel4);
edit8.Text:=inttostr(wurfelgesamt2);
wurfelgesamt2:=wurfelgesamt;
if wurfelgesamt2=wurfelgesamt then
  begin
  Kapital:=Kapital+(3*Einsatz);
  Edit1.Text:=inttostr(Kapital);
  Form5.show;
  form3.hide;

  end
else
 begin
  if (wurfelgesamt2=2) or (wurfelgesamt2=3) or (wurfelgesamt2=12) then
   begin
    Form6.show;

   end;

end;
end;
end.
Delphi-Quellcode:
unit Unit4;

interface

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

type
  TForm4 = class(TForm)
    Label1: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

uses Unit1, Unit2;

{$R *.dfm}

procedure TForm4.BitBtn2Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm4.BitBtn1Click(Sender: TObject);
begin
Form1.show;
Form4.hide;
form2.Bitbtn1.Visible:=true;
form2.bitbtn1.enabled:=true;
form2.bitbtn2.Visible:=false;
form2.label2.visible:=false;
form2.edit2.visible:=false;
end;

end.
Delphi-Quellcode:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, unit1, unit2, unit3, unit4, Buttons;

type
  TForm5 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure FormShow(Sender: TObject);

    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

uses Unit6;

{$R *.dfm}

procedure TForm5.FormShow(Sender: TObject);
begin
Edit1.Text:=inttostr(Kapital);
Edit1.Enabled:=false;
end;



procedure TForm5.BitBtn2Click(Sender: TObject);
begin
Form1.show;
Form5.hide;
form2.Bitbtn1.Visible:=true;
form2.bitbtn1.enabled:=true;
form2.bitbtn2.Visible:=false;
form2.label2.visible:=false;
form2.edit2.visible:=false;
form3.close;

end;
procedure TForm5.BitBtn3Click(Sender: TObject);
begin
ShowMessage('Test') ;

end;
end.
Delphi-Quellcode:
unit Unit6;

interface

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

type
  TForm6 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

end.
Angehängte Dateien
Dateityp: zip craps_210.zip (245,4 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
gerrylenz

Registriert seit: 27. Dez 2003
2 Beiträge
 
#2

Re: Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 02:00
Hallo,

bitte keine ellenlangen Quelltexte posten. Das liest sich eh keiner durch.

Es kann sein das im Quelltext ein Steuerzeichen vorhanden ist. Dieses liest die IDE nicht oder fehlerhaft.

Versuche deinen Quelltext mal in einen anderen Editor zu laden der entweder die Steuerzeichen anzeigt oder diese Ignoriert.
Nach entfernen aller Steuerzeichen kopierst Du diesen zurück in die IDE.

Das ganze ist mir vor Jahren auch schon einmal passiert und ich hab mich dumm und dämlich gesucht.


Gerry
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 02:56
Zitat von gerrylenz:
Es kann sein das im Quelltext ein Steuerzeichen vorhanden ist. Dieses liest die IDE nicht oder fehlerhaft.
Wo soll denn das herkommen und dann noch durchcompilieren ? @Fragesteller : gehe in den OI und Du wirst sehen, dass dem Ereignis in der DFM keine Prozedur zugewiesen ist. Also läuft auch F7 da einfach durch.
Gruß
Hansa
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#4

Re: Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 06:47
Hi
Ich werd jetzt mal OT, aber es muß mal deutlich gesagt werden !
Nun, wenn du schon soooo langen Qelltext lieferst, dann kann ich mir eine Bemerkung dazu nicht verkneifen. Ich frage mich, sagen eure Lehrer nix von Einrücken und so ? Oder ist es nur Faulheit ? Es wird immer wieder darauf hingewiesen und immer wieder wird es scheinbar ignoriert.
Bitte, gebt euren Lehrern endlich mal einen Hinweis, das die Gestaltung des Quelltextes genauso wichtig ist, wie der Code selber.
Auch dient der Lesbarkeit die Namensgebung von Variablen und Objekten. Woher soll ich wissen, was BitBtn4 ist oder welchen Inhalt Edit17 vermutlich haben wird. Erwartet ihr ernsthaft Hilfe, wenn eine Variable mit aussagekräftigen Bezeichner "a" definiert ist ?
Also, das Einrücken sollte so verstanden werden, das nach jedem Begin 2 oder mehr Leerzeichen vor die nächste Zeile geschrieben wird. Beim End gehts dann wieder zurück. Damit sind die Bereiche sehr deutlich sichtbar.
z.B.
Zitat:
If x=y then
begin
....
....
end;
Tu dir selbst den Gefallen und nimm diesen Hinweis ernst. Es hilft dir, deinen Code zu lesen und auch problematische Stellen zu finden.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
Tanis64

Registriert seit: 13. Jun 2007
15 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 07:35
For die Code Fomatierung gibt es auch sehr gute Plugins wie z.B. Jedi Code Format

Damit ist das ganze ein Kinderspiel, und es Hilft auch denen die im Team entwickeln (vorausgesetzt mann einigt sich auf eine einheitliche Konfiguration) sehr.

http://jedicodeformat.sourceforge.net/

Gruß
Christopher
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Delphi führt Quellcode nicht aus

  Alt 20. Jun 2008, 09:20
Hab mir dein Programm mal angeschaut.

Na was soll dein Button auch sonst machen wenn du dem BitBtn als Kind im OI bkClose einstellst.

nimm ein Speedbutton setz ein Bild rein und schreib alles selber rein.

Delphi-Quellcode:
 Showmessage('Test');
 Close;

[edit] du kannst auch mal deinen ganzen Code oben rausnehmen das Projekt häng ja an da steht alles drin
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  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 17:25 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