Главная страница
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.054 c
3-1088630723
Zlod3y
2004-07-01 01:25
2004.07.25
Упаковка БД


1-1089290665
Oleg_
2004-07-08 16:44
2004.07.25
Как узнать версию IE


6-1085550788
4d696b65
2004-05-26 09:53
2004.07.25
MAC-адрес


3-1088488183
Akella
2004-06-29 09:49
2004.07.25
Народ подскажите как указать универсальный путь к базе данных


1-1089409823
nick_mas
2004-07-10 01:50
2004.07.25
Как отключить процедуру RadioButton1.Click для "Down" и "Up"???