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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2010, 13:00   #1
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию C++ -> Delphi

Всем привет!

не получается правильно портировать код...

Код:
unsigned int weird2size( const unsigned char weird[4] )
{
	return	(weird[3]&127) + 
		128*(weird[2]&127) + 
	128*128*(weird[1]&127) + 
128*128*128*(weird[0]&127);
}
Код:
unsigned int weird3size(const unsigned char weird[3])
{
	return weird[2] + 
		256*weird[1] + 
	256*256*weird[0];
}
Как правильно портировать вот эти значения?
Код:
0xFFFFFF, 0x334449, 0xD
Код:
void byte_swap( wchar_t& x )
{
	x=(x<<8)|(x>>8);
}
Заранее спасибо!
ZuBy вне форума Ответить с цитированием
Старый 17.10.2010, 14:05   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
type
	FourBytes = array [0..3] of Byte;
	ThreeBytes = array [0..2] of Byte;

function weird2size(const weird: FourBytes): Cardinal;
begin
	Result :=	(weird[3] and 127) + 
		128*(weird[2] and 127) + 
	128*128*(weird[1] and 127) + 
128*128*128*(weird[0] and 127);
end;

function weird3size(const weird: ThreeBytes): Cardinal;
begin
	Result := weird[2] + 
		256*weird[1] + 
	256*256*weird[0];
end;

$FFFFFF, $334449, $D

procedure byte_swap(var x: WideChar);
begin
	x := WideChar(Swap(Word(x)));
end;
Somebody вне форума Ответить с цитированием
Старый 17.10.2010, 15:16   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

вот еще

Код:
unsigned int framesize( const unsigned char size[4] )
{
	return (size[0]<<24)|(size[1]<<16)|(size[2]<<8)|size[3];
}
Код:
unsigned int frame2size(const unsigned char size[3])
{
	return (size[0]<<16)|(size[1]<<8)|size[2];
}
ZuBy вне форума Ответить с цитированием
Старый 17.10.2010, 15:22   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
unsigned int → Cardinal
unsigned char → Byte
int f(int x) {...} → function f(x: Integer): Integer; begin ... end;
return x → Result := x; exit;
x << y → x shl y
x | y → x or y
Somebody вне форума Ответить с цитированием
Старый 17.10.2010, 15:34   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Код:
unsigned int → Cardinal
unsigned char → Byte
int f(int x) {...} → function f(x: Integer): Integer; begin ... end;
return x → Result := x; exit;
x << y → x shl y
x | y → x or y
спасибо! так сам разберусь
ZuBy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На Delphi 7 сделать игру кто хочет стать миллионером в delphi 7 666dart666 Помощь студентам 11 04.11.2010 17:57
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27