Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2011, 15:04   #1
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию Приведение типов к Delphi

Есть dll и описание её функций на C/C++. Выдержка из описания:
Код:
typedef int GohubBool;
typedef struct GohubConnection GohubConnection;
typedef struct GohubDocument GohubDocument;

GohubConnection* gohub_connect(const char* host, int port);
const char* gohub_private_key_owner_info(GohubConnection* connection);
GohubDocument* gohub_query_next_document(GohubConnection* connection, int lastRevision);
Правильно ли для обращения из дельфей подготовил следующее:
Код:
type
  GohubBool = Integer;
  GohubConnection = Pointer;
  GohubDocument = Pointer;

  TGohub_connect = function(const host: PChar; port: Integer): GohubConnection; stdcall;
  TGohub_private_key_owner_info = function(connection: GohubConnection): PChar; stdcall;
  TGohub_query_next_document = function(connection: GohubConnection; lastRevision: Integer): GohubDocument; stdcall;
А с этим типом непонятно что делать в дельфях. Похож на Enumerated, но в конце значение скачком на 4096. Можно ли заменить на smallint или Integer для функции gohub_last_error_code?
Код:
typedef enum GohubErrcode
{
  gohub_server_connection_could_not_be_established,
  gohub_server_inaccessible,
  ...
  gohub_document_has_not_signature,
  gohub_programm_error = 0x1000,
  gohub_invalid_operation,
} GohubErrcode;

GohubErrcode gohub_last_error_code();
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.08.2011, 15:23   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
 TGohub_connect = function(const host: PChar; port: Integer): GohubConnection; stdcall;
const лишнее, по-моему. А может и пофиг, надо проверить.

> А с этим типом непонятно что делать в дельфях

Не помню, начиная с какой именно версии, но в Дельфи тоже так можно:

Код:
type GohubErrcode = (
  gohub_server_connection_could_not_be_established,
  gohub_server_inaccessible,
  gohub_document_has_not_signature,
  gohub_programm_error = $1000,
  gohub_invalid_operation);
> Можно ли заменить на smallint или Integer

На smallint нельзя, на Integer можно )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 10.08.2011 в 15:26.
veniside вне форума Ответить с цитированием
Старый 10.08.2011, 15:32   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

const проверю, а последнее проверил, Д7 поддерживает. Ни когда не сталкивался. Спасибо за участие А в репу не даёт Должок за мной...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
приведение типов??? nikozavr C# (си шарп) 1 14.05.2011 22:29
NetUserAdd() приведение типов disaer Общие вопросы C/C++ 2 12.05.2011 08:09
Приведение пользовательских типов peplenko Общие вопросы C/C++ 6 18.04.2011 12:59
С - приведение типов onewho Общие вопросы C/C++ 3 21.11.2010 00:12
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14