Я использую Delphi 2009.
Я хочу просмотреть содержимое файла (в шестнадцатеричном) внутри заметки.
Я использую этот код:
var
Buffer:String;
begin
Buffer := '';
AssignFile(sF,Source); //Assign file
Reset(sF);
repeat
Readln(sF,Buffer); //Load every line to a string.
TempChar:=StrToHex(Buffer); //Convert to Hex using the function
...
until EOF(sF);
end;
function StrToHex(AStr: string): string;
var
I ,Len: Integer;
s: chr (0)..255;
//s:byte;
//s: char;
begin
len:=length(AStr);
Result:='';
for i:=1 to len do
begin
s:=AStr[i];
//The problem is here. Ord(s) is giving false values (251 instead of 255)
//And in general the output differs from a professional hex editor.
Result:=Result +' '+IntToHex(Ord(s),2)+'('+IntToStr(Ord(s))+')';
end;
Delete(Result,1,1);
end;
Когда я объявляю переменную " s " как char (я знаю, что char увеличивается до 255), я получаю шестнадцатеричные значения результатов до 65535!
Когда я объявляю переменную " s " как byte или chr (0) .. 255 , он выводит различные шестнадцатеричные значения, по сравнению слюбой шестнадцатеричный редактор!
Почему это?Как увидеть правильные значения?
Проверьте изображения на различия.
1-е изображение : Профессиональный редактор шестнадцатеричных символов.
2-е изображение : вывод функции в Memo.
Спасибо.