0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7

Не могу отловить проблему, вроде не большая проблема, но не могу двинуться дальше

27.02.2019, 13:56. Показов 3941. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно написать маленькую длл ку, для обмена пакетами. Делаю(вырезал всё лишнее, оставил соль):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
unit ...
 
interface
 
uses  ..
 
////////////////////////////////////////////////////////////////////////
type
 
  AddInObject = class(TComObject, IDispatch, IInitDone, ILanguageExtender)
 
  private
    UDPS: TIdUDPServer;
 
    procedure UDPRead(Sender: TObject; AData: TBytes;  ABinding: TIdSocketHandle);//stdcall;
 
 
////////////////////////////////////////////////////////////////////////
implementation
 
procedure AddInObject.UDPRead(AThread: TIdUDPListenerThread; AData: TBytes;      ABinding: TIdSocketHandle);
begin
 //Здесь хочу отлавливать событие по приходу пакета
end;
 
 
 
procedure AddInObject.InitUDP();
var
from: TSockAddrIn;
FromLen: Integer;
Packet: TPacket;
 
 
begin
 
 UDPS:=TIdUDPServer.Create();
 UDPS.DefaultPort:=666;
 UDPS.BroadcastEnabled:=true;
 UDPS.Active:=true;
 UDPS.ThreadedEvent:=true;
 
 UDPS.OnUDPRead:= UDPRead();
 
end;
 
begin
 
 
end.
Он мне ругается, дескать [dcc32 Error] AddInObj.pas(290): E2035 Not enough actual parameters - типа, обозвал процедуру с параметрами, будь добр вызывать с параметрами. Пробую, для теста:
Delphi
1
 UDPS.OnUDPRead:= UDPRead(nil, nil, nil);
он говорит
[dcc32 Error] AddInObj.pas(290): E2010 Incompatible types: 'TUDPReadEvent' and 'procedure, untyped pointer or untyped parameter'

Как мне сделать ссылку на мою процедуру, в моём классе, всё перепробовал. Очень нужна помощь, пож-та.

Добавлено через 4 минуты
Если же делаю
Delphi
1
 UDPS.OnUDPRead:= UDPRead;
то ругается
[dcc32 Error] AddInObj.pas(290): E2009 Incompatible types: 'Parameter lists differ'
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2019, 13:56
Ответы с готовыми решениями:

Не очень разбираюсь в VBA , не могу сделать код для это программы.вроде не сложный.но не могу додуматься)
Определить, сколько можно купить толковых, фразеологических и орфографических словарей русского языка, если цена толкового словаря 600 р.,...

Нужен совет, куда двинуться дальше
Всем привет! Кратко расскажу о себе: Вот уже 9 лет после окончания института работаю на должностях РП, начальника отдела с переменным...

Не могу дальше писать программу из-за того что не могу, не умею писать БД
Здравствуйте помогите написать БД. Я создаю программу, которая будет работать с данными! Данные(поля): 1. Имя; 2. Фамилия; 3. Место...

10
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
27.02.2019, 14:16
А почему после описания класса в строке 16 нет end;?
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7
27.02.2019, 14:38  [ТС]
Увлекся удалением лишнего ) в коде end; есть )
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
27.02.2019, 14:47
Для indy10: TUDPReadEvent = procedure(Sender: TObject; AData: TIdBytes; ABinding: TIdSocketHandle) of object;
А у вас процедура имеет иные аргументы.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7
27.02.2019, 14:51  [ТС]
Есть класс AddInObject, у него есть переменная типа TIdUDPServer и процедуры UDPRead и InitUDP (тоже случайно удалил в описании класса создавая здесь основное сообщение). В InitUDP создаю экземплярUDPS типа TIdUDPServer, я говорю, что хочу установить процедуру UDPRead по событию OnUDPRead. Вот что ему не нравится ? )

Добавлено через 3 минуты
Nanotentacle , т.е мне нужно пустые переменные объявить требуемого класса, но у других в других примерах прокатывает и так, без вызова с переменными. Мне нужно пустой TObject, TidBytes, и TIdSocketHandle создавать и с ними вызывать ?
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
27.02.2019, 14:56
Надо просто Adata объявить в процедуре с правильным типом. Присвоение делать так:
Delphi
1
UDPS.OnUDPRead:= UDPRead;
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7
27.02.2019, 15:08  [ТС]
переписал
Delphi
1
2
3
4
procedure AddInObject.UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);
begin
 
end;
вызываю
Delphi
1
UDPS.OnUDPRead:= UDPRead;
теперь ругается [dcc32 Error] AddInObj.pas(293): E2010 Incompatible types: 'TIdUDPListenerThread' and 'TObject'

Добавлено через 5 минут
так
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure AddInObject.UDPRead(Sender: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle);
 
procedure AddInObject.InitUDP;
var
from: TSockAddrIn;
FromLen: Integer;
Packet: TPacket;
t1:TIdUDPListenerThread;
t2:TBytes;
t3:TIdSocketHandle;
 
begin
 UDPS:=TIdUDPServer.Create();
 UDPS.DefaultPort:=666;
 UDPS.BroadcastEnabled:=true;
 UDPS.Active:=true;
 UDPS.ThreadedEvent:=true;
 UDPS.OnUDPRead:= UDPRead(t1,t2,t3);
так ругается
[dcc32 Error] AddInObj.pas(293): E2010 Incompatible types: 'TUDPReadEvent' and 'procedure, untyped pointer or untyped parameter' такое чувство, что ему чем то вызов процедуры не нравится, а что я ему ещё могу предложить (

Добавлено через 1 минуту
пробую
Delphi
1
 UDPS.OnUDPRead:= AddInObject.UDPRead(t1,t2,t3);
он ругается [dcc32 Error] AddInObj.pas(293): E2076 This form of method call only allowed for class methods or constructor
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
27.02.2019, 15:42
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
unit ...
 
interface
 
uses  ..
 
////////////////////////////////////////////////////////////////////////
type
 
  AddInObject = class(TComObject, IDispatch, IInitDone, ILanguageExtender)
 
  private
    UDPS: TIdUDPServer;
 
    procedure UDPRead(AThread: TIdUDPListenerThread; AData: TidBytes;  ABinding: TIdSocketHandle);//stdcall;
 
 
////////////////////////////////////////////////////////////////////////
implementation
 
procedure AddInObject.UDPRead(AThread: TIdUDPListenerThread; AData: TidBytes;      ABinding: TIdSocketHandle);
begin
 //Здесь хочу отлавливать событие по приходу пакета
end;
 
 
 
procedure AddInObject.InitUDP();
var
from: TSockAddrIn;
FromLen: Integer;
Packet: TPacket;
 
 
begin
 
 UDPS:=TIdUDPServer.Create();
 UDPS.DefaultPort:=666;
 UDPS.BroadcastEnabled:=true;
 UDPS.Active:=true;
 UDPS.ThreadedEvent:=true;
 
 UDPS.OnUDPRead:= UDPRead;
 
end;
 
begin
 
 
end.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7
27.02.2019, 15:48  [ТС]
[dcc32 Error] AddInObj.pas(311): E2009 Incompatible types: 'Parameter lists differ' ((((

Добавлено через 1 минуту
Если

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure AddInObject.InitUDP;
var
from: TSockAddrIn;
FromLen: Integer;
Packet: TPacket;
t1:TIdUDPListenerThread;
t2:TidBytes;
t3:TIdSocketHandle;
 
 
begin
 
 UDPS:=TIdUDPServer.Create();
 UDPS.DefaultPort:=666;
 UDPS.BroadcastEnabled:=true;
 UDPS.Active:=true;
 UDPS.ThreadedEvent:=true;
 UDPS.OnUDPRead:= UDPRead(t1,t2,t3);
то [dcc32 Error] AddInObj.pas(311): E2010 Incompatible types: 'TUDPReadEvent' and 'procedure, untyped pointer or untyped parameter'
0
882 / 404 / 173
Регистрация: 20.10.2016
Сообщений: 1,828
27.02.2019, 15:56
Лучший ответ Сообщение было отмечено andrey-1c как решение

Решение

Цитата Сообщение от andrey-1c Посмотреть сообщение
UDPS.OnUDPRead:= UDPRead(t1,t2,t3);
Нет

Цитата Сообщение от andrey-1c Посмотреть сообщение
UDPS.OnUDPRead:= UDPRead();
Нет

Цитата Сообщение от andrey-1c Посмотреть сообщение
UDPS.OnUDPRead:= UDPRead;
Да

Блин, ну вы возьмите, откройте форму в дизайнере, положите на форму TidUDPServer и через дизайнер создайте ему событие ONUDPRead, посмотрите аргументы создавшейся процедуры, и просто скопируйте их к себе. Я даже отложил в сторону телефон, взял ноутбук и в нем посмотрел необходимые аргументы, после чего выложил вам готовый код. А вы продолжаете пытаться найти решение методом брутфорса.
1
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7
27.02.2019, 16:05  [ТС]
Спасибо!!!
AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2019, 16:05
Помогаю со студенческими работами здесь

Как продолжить дальше? Вроде сформировал массив, а дальше немного не разберусь
Дан двумерный массив. Массив заполнить случайными числами на отрезке . Концы отрезков и размер массивы ввести с клавы. 1) Найти среднее...

Не могу решить проблему
Привет всем. У меня появилась проблема... раньше был траффик с гугла, маленький, но был... (65-70 человек, наверное песок ещё до сих пор......

Не могу найти проблему CSS
Картинка не помещается в блок.

Html парсинг, не могу решить проблему
Приветствую всех Вопрос следющий Есть сохраненная интернет страничка htm следующего вида допустим 1.htm <!-- saved from...

Управление светодиодной лентой - не могу понять проблему
Всем доброго дня! Столкнулся со странной проблемой, не могу её понять. Помогите пожалуйста. Есть Attiny44A, которая выдает ШИМ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru