Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
14-1117612604
Тульский
2005-06-01 11:56
2005.06.29
Мирный договор с Японией


3-1116318431
atruhin
2005-05-17 12:27
2005.06.29
Как подсчитать кол-во уникальных значений поля с учетом NULL


14-1117510118
Магнум
2005-05-31 07:28
2005.06.29
Microsoft Outlook


14-1117908515
Udaff
2005-06-04 22:08
2005.06.29
проблема с печатью


1-1118107653
Rat
2005-06-07 05:27
2005.06.29
Как в DBGrid сделать дополнительный bookmark





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский