Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Использование модулей   Найти похожие ветки 

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

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


 
qube ©   (2002-09-23 16:43) [1]

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


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

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

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.


 
Внук ©   (2002-09-24 09:52) [3]

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


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

>Внук

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


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

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


 
Внук ©   (2002-09-24 09:59) [6]

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


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

>Внук

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


 
Внук ©   (2002-09-24 10:08) [8]

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


 
Внук ©   (2002-09-24 10:10) [9]

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



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

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



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-8174
ilysha
2002-09-03 14:17
2002.10.03
Как разместить значек MSN Messenger на странице сайта


1-7885
AL2002
2002-09-17 17:40
2002.10.03
AddFontResource


1-8003
CrazyAngel
2002-09-21 15:52
2002.10.03
Как из dll вызвать функцию моей программы ?


3-7851
Steven
2002-09-13 07:49
2002.10.03
Дрова для


3-7775
ghost_by
2002-09-13 08:20
2002.10.03
Обновление Blob полей - глючит....