Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование модулей


Лана Розанова ©   (2002-09-23 16:38:00) 

Почему при подключении чужого модуля и использовании его
типов переменных, у меня программа, на первой же строке
модуля выдает "Ошибка доступа к адресу памяти ......"
СПАСИБО!!!


Лана Розанова   (2002-09-24 10:20:00) [1]

Чмоки тебя Внучок. Спасибо.


Внук   (2002-09-24 10:10:00) [2]

Вместо Port.Create("COM1",9600,1,1,"","","",tmp);
Port:=TMyComPort.Create("COM1",9600,1,1,"","","",tmp);


Внук   (2002-09-24 10:08:00) [3]

У меня не выдает


Лана Розанова   (2002-09-24 10:07:00) [4]

>Внук

Поставила в конструкторе inherited create; но все равно выдает ошибку.


Внук   (2002-09-24 09:59:00) [5]

Правильно, потому что список параметров разный, нужно писать не просто Inherited, а Inherited Create; :)


Лана Розанова   (2002-09-24 09:57:00) [6]

Действительно, ошибка возникает как будто объект не создан.
А как это исправить?


Лана Розанова   (2002-09-24 09:55:00) [7]

>Внук

На него компилятор жалуется. Несовместимость типов.


Внук   (2002-09-24 09:52:00) [8]

Это кто ж такой модуль написал, а где Inherited в конструкторе?


Лана Розанова   (2002-09-24 09:50:00) [9]

Это модуль...

unit ComPort_Class;

interface
uses
Classes,Windows,Sysutils,Head_Class;
{$define USD_NEW_CRC}
{$ASSERTIONS ON}
type
TMyComPort = class(TObject)
private
iTypeInter : integer; // 1 - RS232; 2-Прямой модем 3 - Телефонный модем; 4 - Радио модем.
iTypeTel : integer; // 1 - тоновый; 2 - импульсный
sNumber_Tel : string; // номер телефона для модема
sInicial : string; // строка модемной инициализации
sPozivnoy : string; // позывной для радиомодема
sComName : string; // наименование ком порта
iComRate : integer; // скорость обмена
hComPort : THandle; // хендл порта
bFlagEnable : boolean; // true - порт занят false - порт свободен
dcb : TDCB;
ct : TCommTimeouts;
public
constructor Create(ComName : string;
ComRate : integer;
TypeInter : integer;
TypeTel : integer;
TelNumber : string;
InicStr : string;
Pozivnoy : string;
var res : integer);
implementation

//---------------------------------------------------------------// Конструктор
//---------------------------------------------------------------constructor TMyComPort.Create(ComName : string;
ComRate : integer;
TypeInter : integer;
TypeTel : integer;
TelNumber : string;
InicStr : string;
Pozivnoy : string;
var res : integer);
begin
hComPort := 0; //Здесь и возникает ошибка
iTypeInter := TypeInter;
iTypeTel := TypeTel;
sNumber_Tel := TelNumber;
sInicial := InicStr;
sPozivnoy := Pozivnoy;
sComName := ComName;
iComRate := ComRate;
res := TestPort;
IniPort;
end;
end;

Это моя программка...

unit Unit1;

interface

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

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

var
Form1: TForm1;
Port:TMyComPort;
tmp:integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
tmp:=0;
Port.Create("COM1",9600,1,1,"","","",tmp);
end;

end.


qube   (2002-09-23 16:43:00) [10]

При обращении к переменным ошибок доступа к памяти не бывает. А вот при обращении к объекту, который не был создан, очень даже бывают. Например, в обработчике OnCreate форма обращается к форме, которая создается позже. Приведи текст, где ошибка возникает.


Наверх

Титульная страница Поиск, карта сайта Написать письмо