![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 правильно отрабатывает? Последний раз редактировалось 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
|
||||
|
||||
|
Цитата:
|