![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание класса [D7, WinXP]
_saha_ © (2002-12-05 11:00:00)Привет!
хочу сделать класс для работы с сом, пока есть конструктор и деструктор. При создании класса в конструкторе при попытке открытия порта вылетает ошибка, если все тоже проделать без класса, а просто в функции, то все ок. Я начинающий, предполагаю что с портом это никак не связано, просто что-то не так в описании класса, про готовые компоненты работы с портом знаю, но не хочу использовать, важен сам процесс. Текст программы:
.....
{стандартная фигня}
.....
TComPort=class(TObject)
protected
HPort:Cardinal;
public
constructor Create;
destructor Destroy;
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
constructor TComPort.Create;
var ct : TCommTimeouts;
dcb: TDCB;
begin
inherited Create;
HPort := CreateFile(PChar("COM2"), //<< тут ошибка
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if (HPort < 0) or (HPort=INVALID_HANDLE_VALUE) then begin
frmMain.Memo.Lines.Add("
Mike_Goblin (2002-12-06 20:44:00) [1]или сюда www.torry.ru там этого добра с исходниками можно спокойно скачать
Skier (2002-12-06 10:24:00) [2]>_saha_
Ты неправильно создаёшь экземпляр класса...
Вот правильный код :
var
AComPort : TComPort;
begin
AComPort := TComPort.Create;
try
finally
FreeAndNil(AComPort);
end; //try
end;
И вот сюда сходи :
http://delphi.mastak.ru/articles/components-rt.html
_saha_ (2002-12-06 09:33:00) [3]Ок. Но только ошибка в конструкторе не пропала.
Skier (2002-12-05 11:10:00) [4]>_saha_
Для начала поставь override
TComPort=class(TObject)
protected
HPort:Cardinal;
public
constructor Create;
destructor Destroy; override;
end;