Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Помогите дописать игру!   Найти похожие ветки 

 
Keasha   (2005-06-02 12:22) [0]

Сдрасте!У меня проблема, я сам в  Делфи новичёк та кчто самому не разобраться.Решил написать простенькую игру  игру написал но возникли проблемы с таблицей рекордов, еод вроде правельный  но делфи ругается.Вот код моеё игры(жирным шрифтом отметил на что ругается)
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   Image3: TImage;
   Image4: TImage;
   Image5: TImage;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Edit1: TEdit;
   Button4: TButton;
   procedure FormCreate(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 n:integer;
 c:integer;
 maxc:integer;

implementation

uses Unit2, Unit3;

procedure ChangeCaption;
begin
case random(5) of
0:Form1.Button4.Caption:="??... ????? ????, ????";
1:Form1.Button4.Caption:="? ????, ???? ????? — ??? ???!";
2:Form1.Button4.Caption:="? ???????? ????";
3:Form1.Button4.Caption:="?? ??????, ?? ? ??????";
4:Form1.Button4.Caption:="????????? ??? ???...";
end;
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
f:textfile;
nm:string;
begin
Randomize;
ChangeCaption;
assignfile(f,extractfilepath(application.exename)+"record.rcd");
reset(f);
readln(f,nm);
Form3.Label2.Caption:=nm;
readln(f,maxc);
Form3.label4.caption:=inttostr(maxc);
closefile(f);
end;

procedure Say(text:integer);
begin
Form1.Image2.Visible:=false;
Form1.Image3.Visible:=false;
Form1.Image4.Visible:=false;
Form1.Image5.Visible:=false;
case text of
0:Form1.Image2.Visible:=true;
1:Form1.Image3.Visible:=true;
2:Form1.Image4.Visible:=true;
3:Form1.Image5.Visible:=true;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
Const maxc=15;
begin
ChangeCaption;
if strtoint(edit1.text)>n then begin
say(3);
c:=c+1;
end;
if strtoint(edit1.text)<n then begin
say(2);
c:=c+1;
end;
if strtoint(edit1.text)=n then begin
say(1);
if c<maxc then form2.showmodal;
end;
Edit1.Text:="";
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
say(0);
n:=random(100);
c:=0;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
f:textfile;
nm:string;
begin
assignfile(f,extractfilepath(application.exename)+"record.rcd");
reset(f);
readln(f,nm);
readln(f,maxc);
closefile(f);
form3.showmodal;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

end.

unit Unit2;

interface

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

type
 TForm2 = class(TForm)
   Edit1: TEdit;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
f:textfile;
begin
hide;
modalresult:=1;
assignfile(f,extractfilepath(application.exename)+"record.rcd");
rewrite(f);
writeln(f,Edit1.text);
maxc:=c;
writeln(f,maxc);
closefile(f);
form1.Button2Click(nil);

end;

end.


 
Ega23 ©   (2005-06-02 12:26) [1]

А где создана Form3?


 
Keasha   (2005-06-02 12:27) [2]

В смысле где?


 
Ega23 ©   (2005-06-02 12:32) [3]

В прямом. Открой dpr файл, там, скорее всего ты увидишь

Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form1);
Application.CreateForm(TForm3, Form1);

Application.Run


На тот момент, когда у тебя работает обработчик TForm1.FormCreate
объект Form3 ЕЩЁ НЕ СОЗДАН. А ты пытаешься к нему обратиться.
Немудрено, что получаешь Accsess Violation


 
Keasha   (2005-06-02 12:33) [4]

А как можно исправить


 
Ega23 ©   (2005-06-02 12:38) [5]

Вариантов - масса.
Например, всё, что касается инициализации контролов на конкретной форме - выносить в обработчик конкретной формы, а не какой-то другой.
Можно Form3 создавать руками.
Но лучше всего - подумать и переписать всё заново. И не писать Form1, Button18, Label33 - сам ведь потом не поймёшь, что к чему.


 
ЮЮ ©   (2005-06-02 12:49) [6]

перенеси код из  TForm1.FormCreate в  TForm1.FormShow - к этому моиенту  Form3 уже будет создана, а ещё лучше поставь перед
Form3.Show



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.032 c
1-1117876056
Vf
2005-06-04 13:07
2005.06.29
код


1-1118330517
Frozzen
2005-06-09 19:21
2005.06.29
Помогите пожайлуста справится с синтаксисом!


14-1117700572
Keasha
2005-06-02 12:22
2005.06.29
Помогите дописать игру!


14-1117192030
dr Tr0jan
2005-05-27 15:07
2005.06.29
Гостиницы в Москве


14-1117107931
wicked
2005-05-26 15:45
2005.06.29
инсталляторы: что выбрать....