Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизHex в String и наоборот Найти похожие ветки
← →
Ken (2004-11-22 09:46) [40]Ув. мастера, подкиньте пожалуйста пару ссылок на доки где про ето можно прочитать хорошенько! Тоже интересно разобраться!
Спасибо.
← →
Rutven © (2004-11-22 10:26) [41]Что вы мучаетесь.
Есть же замечательные функции в Delphi - BinToHex и HexToBin.
Всё замечательно работает.
← →
Al1 (2004-11-22 14:37) [42]
> Есть же замечательные функции в Delphi - BinToHex и HexToBin.
Мне надо строку в Hex а не BinToHex
← →
Anatoly Podgoretsky © (2004-11-22 15:40) [43]Еще раз ХЕКС уже строка
← →
Al1 (2004-11-22 15:54) [44]
> Anatoly Podgoretsky © (22.11.04 15:40) [43]
> Еще раз ХЕКС уже строка
и?
var buf : array of byte;
s : string;
Buf := s; ???
как перевести?
← →
Anatoly Podgoretsky © (2004-11-22 16:01) [45]Уже перевел, но только строку в массив байтов, если конечно компилятор не обругает.
← →
Al1 (2004-11-22 16:21) [46]Хорошо а как узнать по символу его код?
(обратный процесс ф-ции Chr)
← →
begin...end © (2004-11-22 16:23) [47]
> [46] Al1 (22.11.04 16:21)
> Хорошо а как узнать по символу его код?
Ord()
← →
Al1 (2004-11-22 17:13) [48]Уважаемые мастера, вроде получился у меня какойто результат:
type ArrayOfByte = array of byte;
implementation
{$R *.dfm}
function Hex2StrHex (Buf : array of byte; BufLength : integer):String;
var i : integer;
begin
Result := "";
for I := 1 to BufLength do
begin
Result := Result + Format("%x", [Buf[I]])
end;
end;
function Hex2Str (Buf : array of byte; BufLength : integer):String;
var i : integer;
begin
Result := "";
for I := 1 to BufLength do
begin
Result := Result + Chr(Buf[I]);
end;
end;
function StrHex2Hex (SHex : string; SHexLength : integer):ArrayOfByte;
var
I: Integer;
begin
if (SHexLength > 0) and (SHexLength mod 2 = 0) then
begin
SetLength(Result, SHexLength div 2);
for I := 0 to High(Result) do
Result[I] := StrToInt("$" + Copy(SHex, I * 2 + 1, 2));
end;
end;
function Str2Hex (S : string; SLength : integer):ArrayOfByte;
var
I: Integer;
begin
if (SLength > 0) then
begin
SetLength(Result, SLength);
for I := 0 to High(Result) do
Result[I] := Ord(S[i+1]);
end;
end;
Проверьте пожалуйста, может чтото не так?
И еще вопросик: а как обьявить function (): array of byte, не обьявляя новый тип: type ArrayOfByte = array of byte ???
Заранее спасибо.
← →
begin...end © (2004-11-22 17:22) [49]
> [48] Al1 (22.11.04 17:13)
А зачем в функции передавать длины массивов и строк, когда их (длины) можно определять внутри функций?
← →
Al1 (2004-11-22 17:28) [50]
> begin...end © (22.11.04 17:22) [49]
>
> > [48] Al1 (22.11.04 17:13)
>
> А зачем в функции передавать длины массивов и строк, когда
> их (длины) можно определять внутри функций?
на случай универсальности.... вдруг забудешь укоротить строчку, после работы с ней!... или в буфере допустим тебе надо будет скушать и обработать кусок а не весь!... :-)
← →
begin...end © (2004-11-22 17:50) [51]
> [50] Al1 (22.11.04 17:28)
Зато можно что-то перепутать и передать, например, число, бОльшее, чем вообще возможно. А это уже будет выход за границы.
> [48] Al1 (22.11.04 17:13)
> function Hex2StrHex (Buf : array of byte; BufLength : integer):String;
> for I := 1 to BufLength do
Ошибка. Buf: array of Byte - это ОТКРЫТЫЙ массив. Для них, как и для динамических, нумерация элементов начинается с нуля. Здесь, ИМХО, лучше заменить array of byte на уже объявленный тобой тип - динамический массив - ArrayOfByte. Но нижний индекс всё равно будет равен нулю, так что советую здесь вместо 1 и BufLength использовать Low(Buf) и High(Buf).
← →
Al1 (2004-11-22 18:01) [52]
> begin...end © (22.11.04 17:50) [51]
Понятно! Буду иметь ввиду! Спасибо.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.086 c