![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно подключить обьект или в чем ошибка?...
Andrewtitoff © (2008-03-20 10:37:00)Здравствуйте!, нагублил я тут вроде как полезную вещь для обработки ошибок под названием TgsCatcher
( http://www.codenet.ru/progr/delphi/stat/errors.php)
использовал этот вариант:
( http://www.delphikingdom.com/asp/answer.asp?IDAnswer=58915)
Тока ничего немогу понять Создал я в своей проге новый юнит, засунул туда все это дело, все замечательно откомпилировалось, после чего его вроде как и написано в статье подключил т.е. описал обьект "ааа" класса TgsCatcher после чего установил его св-во enabled в true, как и написанно в статье, вот только после этого появилась ошибка "Access violation at address 0048C7A1 in module Project_Lift.exe"....
выделяет эту строку:
procedure TgsCatcher.SetEnabled(const Value: boolean);
begin
FEnabled := Value;
^^^^^^^^^^^^^^^^^^
end;
Что не так я делаю?, подскажите пожалуйста!...
unit Unit_FormMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AccessXP, OleServer, StdCtrls, Buttons, ExtCtrls, ImgList,
Printers, Unit_My,Unit_New,Unit_VViezda,Unit_Form_PPEdit,Unit_VPuska,Unit_Password, mmsystem, Menus, Unit2,gsCatcher;
type
TFormMain = class(TForm)
Exit: TBitBtn;
...
procedure FormCreate(Sender: TObject);
...
private
public
{ Public declarations }
end;
var
FormMain : TFormMain;
...
aaa : TgsCatcher;
implementation
uses Unit_FormShow, Unit_New_menu, Unit_Message, Unit_FormEditSP,
Unit_FormSkPEdit, Unit_FormDemo;
{$R *.dfm}
procedure TFormMain.FormCreate(Sender: TObject);
begin
aaa.Enabled:=true;
...
end;
Kolan (2008-03-20 16:00:00) [1]Удалено модератором
Andrewtitoff (2008-03-20 15:39:00) [2]2 Сергей М.
Не поможешь?, пожалуйста... =)))
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1206014820&n=18
{RASkov} (2008-03-20 14:28:00) [3]> [35] Andrewtitoff © (20.03.08 14:21)
> у меня в прграмме есть одна форма, которая убрана из автосоздаваемых...
> Ну почему сразу так?,
Если не умеешь создавать(уничтожать) объекты сам, то рано тебе еще убирать формы из автосоздаваемых ;)
Andrewtitoff (2008-03-20 14:21:00) [4]Ну почему сразу так?, у меня в прграмме есть одна форма, которая убрана из автосоздаваемых..., правда остальные неубраны...
{RASkov} (2008-03-20 13:43:00) [5]Я не думаю, что автор формы поубирал из автосоздаваемых и создает(или не создает) их динамически...
Я вот к ответам Коляна присоединяюсь :)
> [33] Andrewtitoff © (20.03.08 13:33)
Что, все уже?)
Andrewtitoff (2008-03-20 13:33:00) [6]Ясно..., в очередной раз всех утомил... =))))
Сергей М. (2008-03-20 13:33:00) [7]
> Andrewtitoff © (20.03.08 13:28) [30]
Ладно, проехали.
Работает оно себе и работает, возвеселись и возрадуйся)
Andrewtitoff (2008-03-20 13:30:00) [8]2 2 Сергей М.
Это я проверяю работу TgsCatcher:
TFileStream.create(MD+'\x.lft',fmOpenReadWrite);
Andrewtitoff (2008-03-20 13:28:00) [9]2 Сергей М.
В смысле?
procedure TFormMain.NewClick(Sender: TObject);
begin
TFileStream.create(MD+'\x.lft',fmOpenReadWrite);
Form_New.ShowModal;
//Form_New.Show;
end;
procedure TForm_New.FormShow(Sender: TObject);
var
// ix : integer;
fT : textFile;
sr : string;
begin
//
Form_New.top:=260;
Form_New.left:=107;
//
{ with Screen do
for ix := 0 to FormCount-1 do
if Forms[ix] <> Form_New then
Forms[ix].Enabled := false;
{}
ClearForm;
street.Clear;
AssignFile(fT,MD+'\System\Street.lft');
reset(ft);
repeat
Readln(ft,sr);
street.items.add(sr);
until eof(ft);
CloseFile(Ft);
Prichina.Clear;
AssignFile(fT,MD+'\System\NP.lft');
reset(ft);
repeat
Readln(ft,sr);
Prichina.items.add(sr);
until eof(ft);
CloseFile(Ft);
end;
Или Вы про что?
Andrewtitoff (2008-03-20 13:24:00) [10]2 Ega23
А что не так то?....
Сергей М. (2008-03-20 13:17:00) [11]
> Это просто еще одна форма моего приложения
Это не форма, это переменная.
Где и какона получает значение в ходе работы твоего программного шедевра ?)
Ega23 (2008-03-20 13:17:00) [12]
> Так же правильно будет?
Может хватит гадать, а?
Синтаксически - всё правильно. Логически - нет.
Andrewtitoff (2008-03-20 13:16:00) [13]2 Сергей М
Вот так вроде как все работает:
aaa := TgsCatcher.Create(FormMain);
try
aaa.Enabled:=true;
except
aaa.Free;
end;
Так же правильно будет?
Andrewtitoff (2008-03-20 13:14:00) [14]2 Сергей М.
Это просто еще одна форма моего приложения
unit Unit_New;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit_My, Unit_New_menu,Unit_FormShow, Buttons, ExtCtrls;
type
TForm_New = class(TForm)
Street: TComboBox;
HOUSE: TComboBox;
Prichina: TComboBox;
Zapisati: TBitBtn;
Nazad: TBitBtn;
VPost: TLabel;
Label1: TLabel;
CORP: TComboBox;
PARNUM: TComboBox;
Etaz: TComboBox;
Zayavitel: TEdit;
Image1: TImage;
procedure FormHide(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ZapisatiClick(Sender: TObject);
procedure StreetChange(Sender: TObject);
procedure NazadClick(Sender: TObject);
private
{Для перемещения формы вне заголовка объявляем процедуру}
procedure WMNCHitTest(var M:TWMNCHitTest);message wm_NCHitTest;
public
{ Public declarations }
end;
var
Form_New : TForm_New;
Fn : TFileStream;
Fstring : myString;
n : integer;
cs : string;
implementation
uses Unit_FormMain;
{$R *.dfm}
Сергей М. (2008-03-20 13:04:00) [15]
> А по русски можно?
Можно и по-русски, если расскажешь, что такое "form_New")
Andrewtitoff (2008-03-20 13:04:00) [16]2 Kolan
А вот так правильно же будет? :
aaa := TgsCatcher.Create(FormMain);
try
aaa.Enabled:=true;
except
aaa.Free;
end;
Ega23 (2008-03-20 13:01:00) [17]
> А по русски можно?, какая еще религия?, в чем тут дело то?
> =))))
Может всё-таки лопату?
Andrewtitoff (2008-03-20 12:59:00) [18]2 Kolan
Аааа..., а куда это писать то зачем сразу обьект?, мне же надо что бы это все дело работало на протяжении всей работы программы...
2 Сергей М
>см. [16]
А по русски можно?, какая еще религия?, в чем тут дело то? =))))
Сергей М. (2008-03-20 11:58:00) [19]
> непонимаю уже ничего при чем тут эта сторока
см. [16]
> Сейчас вот так пробовал
> как я понял можно так
Нельзя. Ни так ни так. Потому что aaa - это не переменная типа TConponentClass.
Kolan (2008-03-20 11:58:00) [20]> Ega23 © (20.03.08 11:46)
Не сработал телепатор твой :)
> aaa.Create(nil);
> aaa.Enabled:=true;
Andrewtitoff, дело в том, что ты вызываешь метод Create у еще не созданного aaa, и соотв получаешь AV.
Коструктор вызывают обращаясь к классу. Правильно написать так:
aaa := TgsCatcher.Create(nil); //Создание
try
aaa.Enabled:=true; // Использование
finally
aaa.Free; //Удаление объекта.
end;
ЗЫ
С такими знаниями тебе этот компонент не нужен. Возьми Тейкстру и Пачеко и подучи язык.