Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1100755852
SiJack
2004-11-18 08:30
2004.12.05
проблема с использованием пакетов


4-1098353983
Lingo
2004-10-21 14:19
2004.12.05
AddPrinterDriver


1-1101325190
BuG
2004-11-24 22:39
2004.12.05
Как сделать так, чтобы появлялась форма-заставка, пока программа


1-1100781013
denis24
2004-11-18 15:30
2004.12.05
Работа с Word


1-1100878674
denis24
2004-11-19 18:37
2004.12.05
сохранение установок delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский