Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.11.2013, 16:07
zhenia09t zhenia09t вне форума
Прохожий
 
Регистрация: 03.11.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите найти ошибку

delphi выдает ошибку
project Project1.exe raised exception class eaccessviolation with message 'Access violation at address 0044B342 in module 'Project1.exe'. Read of address 000002F4".
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  Unit4 in 'Unit4.pas' {Form4};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4); вот сюда показывает стрелочка
  Application.Run;
end.

Первая форма
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label2: TLabel;
    XPManifest1: TXPManifest;
    PopupMenu1: TPopupMenu;
    N4: TMenuItem;
    Image1: TImage;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
   

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Form2: TForm;
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:=TForm2.Create(application);
Form2.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
 OpenDialog1.Execute;
 image1.Picture.LoadFromFile(opendialog1.filename);
end;

end.

Вторая форма
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    Timer1: TTimer;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  i:integer;
implementation

uses Unit4, Unit3, Unit1;

{$R *.dfm}

procedure TForm2.RadioButton2Click(Sender: TObject);
begin
form4.showmodal;
end;

procedure TForm2.RadioButton1Click(Sender: TObject);
begin
form3.showmodal;
end;

procedure TForm2.RadioButton3Click(Sender: TObject);
begin
form4.showmodal;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Form1.Visible:=false;
timer1.Enabled:=true;
i:=30;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
i:=i-1;
label2.Caption:='залишилось '+ inttostr(i)+ ' сек ';
 if i=0 then
 begin
  Timer1.Enabled:=false;
  Form4.Show;
 end;
 if radiobutton1.Checked then
 Timer1.Enabled:=false;
 if radiobutton2.Checked then
 Timer1.Enabled:=false;
 if radiobutton3.Checked then
 Timer1.Enabled:=false;
end;

procedure TForm2.N1Click(Sender: TObject);
begin
Application.Terminate;
end;

end.

Третья форма
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Visible:=false;
end;

end. 

Четвертая форма
unit Unit4;

interface

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

type
  TForm4 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
Form2.Visible:=false;
end;

end.

Последний раз редактировалось M.A.D.M.A.N., 03.11.2013 в 16:41.
Ответить с цитированием
  #2  
Старый 03.11.2013, 19:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Экстрасенсы в отпуске. На какой строке выдает ошибку?
Ответить с цитированием
  #3  
Старый 03.11.2013, 19:13
zhenia09t zhenia09t вне форума
Прохожий
 
Регистрация: 03.11.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Application.CreateForm(TForm4, Form4);
Показывает стрелку на эту строку
Ответить с цитированием
  #4  
Старый 03.11.2013, 19:26
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
procedure TForm3.FormCreate(Sender: TObject);
begin
Form2.Visible:=false;
end;
А ты уверен, что Form2 на этот момент существует? Я уверен, что нет. И для Form4 то же самое.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 03.11.2013, 19:30
zhenia09t zhenia09t вне форума
Прохожий
 
Регистрация: 03.11.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

точно, спасибо большое)
Ответить с цитированием
  #6  
Старый 04.11.2013, 15:42
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Код:
procedure TForm1.N2Click(Sender: TObject);
begin
 OpenDialog1.Execute;
 image1.Picture.LoadFromFile(opendialog1.filename);
end;
Не стоит так вызывать OpenDialog1. А что будет если пользователь передумает и закроет ваш диалог без выбора файла? Лучше напишите так:
Код:
procedure TForm1.N2Click(Sender: TObject);
begin
 if not OpenDialog1.Execute then Exit;
 image1.Picture.LoadFromFile(opendialog1.filename);
end;

Кроме того, для отображения/скрытия форм есть стандартные методы Show/Hide, а свойство Visible обычно используют для логических операций. Так-что вместо:
Form2.Visible:=false;
корректнее использовать:
Form2.Hide;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 04.11.2013 в 15:47.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter