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

Вниз

Как передать в процедуру dll параметр   Найти похожие ветки 

 
Комбинатор   (2004-07-10 22:26) [0]

Как передать в процедуру dll параметр в виде типизированного указателя?

procedure GET_DATA(const DataInput:^BYTE;DataOutput:^BYTE;LengthDataInput:Integer);export;stdcall;

В таком заголовке символы ^BYTE не рассматриваются компилятором как тип указателя и он выдаёт:

"Identifier expected but "^" found"

В чём проблема? Подскажите пожалуйста.


 
Palladin ©   (2004-07-10 22:47) [1]

чем pchar не устроил?


 
Комбинатор   (2004-07-10 23:04) [2]

У меня есть шаблон, которого должен придерживаться.


 
Комбинатор   (2004-07-10 23:06) [3]

Вообще в dll писать ^type возможно?


 
Palladin ©   (2004-07-10 23:10) [4]

ты думаешь ^byte отличается от ^array [1...многомилионов] of integer; ?
или может pointer отличается от них всех с точки зрения системы?


> У меня есть шаблон, которого должен придерживаться

смысла этой фразы мне вообще не понятен... Шаблон. Что за шаблон? Проектирования? Ни разу не видел шаблонов с ^BYTE... которого должен придерживатся кто?..


> Вообще в dll писать ^type возможно?

Вообще в dll писать возможно все, не возможно так писать в декларации процедуры или функции...


 
Комбинатор   (2004-07-10 23:25) [5]

>Вообще в dll писать возможно все, не возможно так писать в декларации процедуры или функции...
Почему?

Шаблон....это то есть мне дали заголовок процедуры и я должен
его придерживаться...

Почему нельзя писать ^type  в декларации процедуры...
Не уж то писать name:pointer;?


 
Palladin ©   (2004-07-10 23:28) [6]


> Почему?

Почему солнце не квадратное?


> Не уж то писать name:pointer;?

Type
PByte=^Byte; //что практически эквивалентно PChar...

procedure GET_DATA(const DataInput:PByte;DataOutput:PByte;LengthDataInput:Integer);export;stdcall;


 
Комбинатор   (2004-07-11 00:04) [7]

Спасибо.


 
evvcom ©   (2004-07-11 02:14) [8]

Причем

> Type
> PByte=^Byte;

тоже писать необязательно, так как этот тип уже определен в Windows, Types и System.

> Шаблон....это то есть мне дали заголовок процедуры и я должен
> его придерживаться...

Разницы не будет никакой "с точки зрения системы", если употребить
procedure GET_DATA(const DataInput: PByte; DataOutput: PByte; LengthDataInput: Integer);
или
procedure GET_DATA(const DataInput: PChar; DataOutput: PChar; LengthDataInput: Integer);


 
jack128 ©   (2004-07-11 02:19) [9]


> Разницы не будет никакой "с точки зрения системы", если
> употребить
чесно говоря "с точки зрения системы" разницы не будет даже если мы запишем
procedure GET_DATA(const DataInput: LongInt; DataOutput: Cardinal; LengthDataInput: Pointer);  ;-)  Главное, чтоб размеры типов совпадали..


 
Palladin ©   (2004-07-11 02:21) [10]


> тоже писать необязательно, так как этот тип уже определен
> в Windows, Types и System.

Смысл - показать принцип, а не то что это уже гдето есть...


 
evvcom ©   (2004-07-11 02:40) [11]


> Смысл - показать принцип

Да, конечно.

> а не то что это уже гдето есть...

Но и об этом тоже надо помнить, иначе потом начнут вылазить ошибки, а неподготовленный начинающий программер будет макушку тереть "И чего это этому Delphi не нравится?" Например, где-то будет объявлено
var
 a: PByte; // Windows.PByte
а потом
type
 PByte = ^Byte;
var
 b: PByte; // это уже MyUnit.PByte
и начнутся присвоения
 b := a; // Incompatible types: ...



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

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

Наверх




Память: 0.49 MB
Время: 0.038 c
1-1089276204
Sandman25
2004-07-08 12:43
2004.07.25
Флаги или переопределение событий?


14-1089122964
Andryk
2004-07-06 18:09
2004.07.25
Западное общество загнивает?!


14-1088944223
}|{yk
2004-07-04 16:30
2004.07.25
Как заставить Excel переносить длинные строки


3-1088255763
Амир
2004-06-26 17:16
2004.07.25
Дата, локализация, архив...


14-1088941116
Knight
2004-07-04 15:38
2004.07.25
NetMeeting