Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизКак передать в процедуру 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.061 c