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

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

проблема с созданным компонентом [D7, WinXP]


zaycev ©   (2004-09-27 16:39:00) 

Подскажите пожалуйста в чем проблема, я создал компоненту свою, она компилится замечательно и устанавливается без единого предупреждения или подсказки. Но вот когда я свой компонент бросаю на форму, а потом если пытаюсь удалить то дельфя мне выдаёт Invalid Pointer Operation и не дает никак удалить его. Не пойму в чем дело. уже несколько раз переустанавливал компонент. Всё равно одно и тоже появляется.
Может уже кто с таким сталкивался? Я уже начал грешить на сервис пак 2 для ХР))) незнаю чего делать. Исходный код приводить его думаю это не поместится тут. Но ведь компилится без проблем и регистрируется тож.


KSergey   (2004-09-28 06:12:00) [1]

Да в чем угодно может быть проблема!
Правило отладки компонент: сначала создаем его run-time, добиваемся полностью безпроблемной работы - только после этого устанавливаем.

Хотя, конечно, эт оне избавляет полностью от проблем в design-time...


zaycev   (2004-09-27 17:38:00) [2]

хым, вы знаете, сейчас налил первый апдейт для дельфи7, и всё, проблема исчезла. Что за бред.
Ребята всёравно спасибо вам.


zaycev   (2004-09-27 17:34:00) [3]

destructor TMySock.Destroy;
begin
TestSock.Free;
TestSock1.Free;
inherited;
end;


zaycev   (2004-09-27 17:26:00) [4]

тут есть ошибки, пропущенные буквочки, но это я просто исправлял походу, чтобы яснее было


Sandman25   (2004-09-27 17:26:00) [5]

Деструктор покажите


zaycev   (2004-09-27 17:23:00) [6]

Amoeba
Вот кусок кода, тожет здесь что не так((

 TClientInfo = record
    Username:string;
 end;

 TProxParameter = record
   MaxPktsize: word;
   ProxInfo: string;
 end;

TMySock = class(TComponent)
 private
   TestSock:TClientSocket;
   Testock1:TClientSocket;
   FServer:string;
   FPort:string;
   FProxyType: TProxyType;
   FProxyHost: string;
   FProxyPort: string;
   ProxyPacket0 :string;
   ProxyPacket1 :string;
   ProxyPacket2 :string;
   FOnError: TOnErrorEvent;
   FConnected: TOnConnectedEvent;
   proxseq, proxysend: integer;
   Proxinfo: TProxParameter;

   function proxyseq: integer;
   procedure connect;
   procedure disconnect;
   procedure reset;

 public
   ClientInfo:TClientInfo;
   constructor Create(AOwner: TComponent);override;
   destructor Destroy;override;
   procedure Login;
   procedure Logoff;
   function SendMyText(myText:string);integer;

 published
   property Server:string read FServer write FServer;
   property Port:string read FPort write FPort;
   property Username:string read ClientInfo.Username write ClientInfo.Username;
   property Password:string read FPassword write FPassword;
   property ProxyType: TProxyType read FProxyType write FProxyType default PROXNONE;
   property ProxyHost: string read FProxyHost write FProxyHost;
   property ProxyPort: string read FProxyPort write FProxyPort;
   property OnLogin: TOnLoginEvent read FOnLogin write FOnLogin;
   property OnError: TOnErrorEvent read FOnError write FOnError;
 end;


Amoeba   (2004-09-27 17:10:00) [7]

Или при удалении его в DesignTime, если другой компонент имеет ссылку на него, эта ссылка не устанавливается в nil.


Anatoly Podgoretsky   (2004-09-27 17:07:00) [8]

zaycev   (27.09.04 16:55) [2]
Это означает, что какой то указатель не инициализирован и ничего другого, устраняй ошибку.


Amoeba   (2004-09-27 17:06:00) [9]

1. Названия файла и юнита должны совпадать.

2. У тебя в коде компонента "ошибка в 17-й строке", а все телепаты в бессрочном отпуске.


zaycev   (2004-09-27 17:05:00) [10]

Amoeba не, не имеет, там в published только все переменные его же класса


zaycev   (2004-09-27 17:03:00) [11]

а не, сорри, гоню, одинаковые и файл и юнит


zaycev   (2004-09-27 17:00:00) [12]

Да это я написал свой сокет компонент, чтобы работать напрямую с винсок32.длл.
А проблема не может быть в название файла компонента?
То есть сам файл называется mysocket.pas, а юнит назвается MySock.


Amoeba   (2004-09-27 16:57:00) [13]

Случайно не имеет ли этот компонет в своих published св-вах ссылки на другой компонент?


zaycev   (2004-09-27 16:55:00) [14]

С кодом повозился)) теперь он стал при его удалении из формы выдавать "Access Violation at address 00000000. Read of Address 00000000". Уххххх


Amoeba   (2004-09-27 16:55:00) [15]

Выход только один - найти ошибку в коде компонента и исправить код. А чтобы тебе могли помочь советом, где примерно ее искать, сообщи хотя бы, что это за компонет. Вполен возможно, что наступаешь на хорошо известные грабли.


Reindeer Moss Eater   (2004-09-27 16:42:00) [16]

Ошибка в коде компонента


Наверх

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