Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 7

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

27.02.2019, 13:56. Показов 3830. Ответов 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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru