Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.01.2018, 23:24
Olstgel Olstgel вне форума
Прохожий
 
Регистрация: 16.12.2017
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Несовместимые типы: 'byte' and 'Array'

Если указываю tmpBinar: byte, то получаю в ответ 1 байт, но в buf висит 35 байт. Если пробую tmpBinar представить как массив, то получаю ошибку "Несовместимые типы: 'byte' and 'Array'".


Код:
implementation
Function _Binar (var buf: byte; var buflen: longint; txt: pchar) : Integer; stdcall; external 'abc.dll';


Function Binar(var bufbin : string; var buflen : longint; pos : pchar) : Integer; 
 var
      tmpBinar :   array [0..255] of byte  ; 
      n : Integer;
begin
    
    result := _Binar (tmpBinar, n, pos);

end;

PS/
Поторопился. Вопрос решился так: type DbyteArr=array of byte;

Последний раз редактировалось Olstgel, 27.01.2018 в 00:27.
Ответить с цитированием
  #2  
Старый 27.01.2018, 04:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ой, чей-то я сомневаюсь, что это правильная декларация. Длл небось на С/С++ написана? И тип указан что-нить типа byte** или byte[]*?
Ответить с цитированием
  #3  
Старый 27.01.2018, 19:07
Olstgel Olstgel вне форума
Прохожий
 
Регистрация: 16.12.2017
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Не, из VB срисовывал.
...(ByRef buf() as byte, ByRef buflen As Integer, ByVal txt As String)...
Ответить с цитированием
  #4  
Старый 31.01.2018, 12:56
Аватар для umelii
umelii umelii вне форума
Прохожий
 
Регистрация: 26.01.2018
Сообщения: 2
Версия Delphi: Java 8
Репутация: 10
По умолчанию

не совсем понятно..
Ответить с цитированием
  #5  
Старый 01.02.2018, 01:40
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А чего непонятного. Массив в дельфях выглядит немного по другому, нежели в С или VB. Я подозреваю, что там просто надо передать указатель на начало некоторого блока памяти. Т.е. импорт функции скорее всего неправильный, просто в данном частном случае срабатывает правильно, но не факт, что будет работать правильно всегда. Вот я и задал вопрос - а как эта функция описана в исходниках самой библиотеки, а то может быть вариант с PAnsiChar будет гораздо более правильным. Все зависит от самой функции, версии дельфей (Unicode или нет) и платформы, под которую собирается код (32 или 64 бит).
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter