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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2011, 06:07   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос Некие куски надо перевести в C++

есть такой код:
Код:
procedure ChangeByteOrder( var Data; Size : Integer )
как его в C++ перевести???
VintProg вне форума Ответить с цитированием
Старый 02.09.2011, 06:22   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Код:
void ChangeByteOrder(&Data, int Size)
{

}
На счёт &Data есть сомнения. Как перевести неопределённый тип var не знаю, попробуй через указатель.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.09.2011, 06:24   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Вот так работает:
Код:
void ChangeByteOrder(void* Data, int Size)
А это как перевести?
Код:
srbControl : TSrbIoControl absolute Buffer;
VintProg вне форума Ответить с цитированием
Старый 02.09.2011, 06:47   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Не понятно что это за тип "TSrbIoControl". В стандартных библиотеках Борланда такого нет. Какие библиотеки подключены?
TSrbIoControl случаем не эта структура?
Код:
type
  TSrbIoControl = packed record
    HeaderLength: ULONG;
    Signature: array[0..7] of Char;
    Timeout: ULONG;
    ControlCode: ULONG;
    ReturnCode: ULONG;
    Length: ULONG;
  end;
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 02.09.2011 в 06:53.
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.09.2011, 06:52   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Удалите кросспост.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.09.2011, 06:52   #6
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Вот
Код:
 struct TSrbIoControl
 {
    ULONG HeaderLength;
    char Signature[7];
    ULONG Timeout;
    ULONG ControlCode;
    ULONG ReturnCode;
    ULONG Length;
  };
я его в C++ перевел!
VintProg вне форума Ответить с цитированием
Старый 02.09.2011, 06:59   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Если надо зделать динамический буфер структур, тогда так:
Код:
TSrbIoControl *srbControl = new TSrbIoControl();
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.09.2011, 07:34   #8
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

CreateFile - блин в C++ Builder не могу найти...
VintProg вне форума Ответить с цитированием
Старый 02.09.2011, 09:59   #9
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

VintProg

я его в C++ перевел!

Поздравляю! Неправильно! :D

А теперь - правильный ответ (:

Код:
#pragma pack(push,1)

struct TSrbIoControl
 {
    ULONG HeaderLength;
    char Signature[8];
    ULONG Timeout;
    ULONG ControlCode;
    ULONG ReturnCode;
    ULONG Length;
  };
#pragma pack(pop)
для типов ULONG и иже с ним необходимо также подключить заголовочный файл Windows.h
кроме этого, в зависимости от того, откуда получена структура, необходимо учитывать (или не учитывать) порядок байт

Если надо зделать динамический буфер структур, тогда так:

А теперь - правильный ответ (:

(хотя, что такое "буфер структур" я не знаю. Может быть, Массив структур? )

TSrbIoControl* arr = new TSrbIoControl[100];

или (лучше)

std::vector<TSrbIoControl> arr;

CreateFile - блин в C++ Builder не могу найти...

Неудивительно - ведь оно часть WinAPI, а не Буилдера...
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
По id получить некие ресурсы [MI_nor] Общие вопросы по программированию, компьютерный форум 4 22.08.2011 14:51
надо перевести из С++ в Paascal ABC Aidar9119 Общие вопросы C/C++ 0 03.01.2011 17:40
надо перевести из С++ в Paascal ABC Aidar9119 Паскаль, Turbo Pascal, PascalABC.NET 0 03.01.2011 17:40
перевести код на С++.. надо сделать программу в Borland C++ Helena_pr Фриланс 2 20.11.2010 00:39