![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Поясню, есть функция в которая не правильно работает в delphi 2010, хотя в delphi 7 все ок.
Код:
function test(types : PChar):string; var i, j : integer; qwResult : UInt64; begin for i:=0 to 2 do begin qwResult := 0; for j := 0 to 4 do begin qwResult := qwResult shl 8; qwResult := qwResult or ord(types[i + 5 + j]); end; Showmessage(IntToStr(qwResult)); end; end; В delphi 2010 значения (Не правильные): 1) 245755818546 2) 241326764623 3) 207000585522 В delphi 7 значения (Правильные): 1) 942682674 2) 808596037 3) 842155314 Помогите сделать так что бы в delphi 2010 работало стабильно. Изменить UInt64 на integer не вариант! Не будет работать следующая функция. |
#2
|
||||
|
||||
![]() Напиши в hex значения.
На 9-й строчке shl правильно отрабатывает? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 09.06.2013 в 13:49. |
#3
|
|||
|
|||
![]() tests('09FCB98022E2181B9914B08A0E36F0');
Да правильно, вот заготовка, можете проверить в delphi 7 и 2010 Код:
program test12; {$APPTYPE CONSOLE} uses Windows, SysUtils; procedure tests(types : PChar); var I, J : Integer; qwResult : UInt64; begin for I := 0 to 2 do begin qwResult := 0; for J := 0 to 4 do begin qwResult := qwResult shl 8; qwResult := qwResult or ord(types[I + 5 + J]); end; WriteLn(qwResult); end; end; begin SetConsoleCP(1251); SetConsoleOutputCP(1251); tests('09FCB98022E2181B9914B08A0E36F0'); readln; end. |
#4
|
||||
|
||||
![]() Цитата:
|
#5
|
||||
|
||||
![]() Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |