Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

НАДО ПРЕОБРАЗОВАТЬ !!! Y --> $XX   Найти похожие ветки 

 
sdw_syscoder   (2004-07-25 23:35) [0]

Ещё раз добрый вечер!
Как преобразовать Char-тип (ASCII-символ) в HEX-формат, т.е. T --> $54. Может кто-нибудь подкинет функцию, а то очень уже поздно и не хочется самому возиться, да и мозги уже не варят.


 
Serge_   (2004-07-25 23:47) [1]

var c:char;
begin
c:="T";
Edit1.Text:=IntToHex(Byte(c),1);
end;


 
Германн ©   (2004-07-25 23:48) [2]

2 Serge_   (25.07.04 23:47) [1]
А 1 - не маловато ли будет?


 
sdw_syscoder   (2004-07-25 23:57) [3]

// А 1 - не маловато ли будет?

Не-а, работает даже при нуле!


 
Fay ©   (2004-07-26 02:47) [4]

Кто не варят? Стыдно! Вы что, на 16 делить не умеете, не зоворя уже о shr.


 
Anatoly Podgoretsky ©   (2004-07-26 09:04) [5]

При делении на 16 ничего не надо знать про shr


 
Fay ©   (2004-07-26 09:14) [6]

2Anatoly Podgoretsky ©   (26.07.04 09:04) [5]
Да, но только при включенной оптимизации.


 
Anatoly Podgoretsky ©   (2004-07-26 09:18) [7]

Fay ©   (26.07.04 09:14) [6]
Отсюда вывод - руки прочь от флажка


 
Fay ©   (2004-07-26 09:22) [8]

IMHO, это как раз тот самый случай, когда не в руках дело.


 
sdw_syscoder   (2004-07-26 09:59) [9]

Доброе утро!

Товарищи, посмотрите пожалуйста код преобразования строки с символами ASCII в 16-е их значения.
Почему происходит ошибка несовместимости типов, когда в цикле функция ORD получает в качестве значения - один символ строки, с помощью команды COPY. Когда задаешь так, ... ord("A") ..., то всё OK!

Как выйти из положения?

function TForm1.AsciiToHex(Source: string): string;
var
 S: String;
 T: Integer;
begin
 with TStringList.Create do
   try
     Text := StringReplace(Source,#32,#13#10,[rfReplaceAll]);
     S := "";
     For T := 0 to Count do S := S + IntToHex(ord(copy(text,t,1)),2);
     Result := S;
   finally
     Free;
   end;
end;


 
Anatoly Podgoretsky ©   (2004-07-26 10:08) [10]

Fay ©   (26.07.04 09:22) [8]
Да нет как раз в руках, правда не только в них


 
sdw_syscoder   (2004-07-26 10:18) [11]

Anatoly Podgoretsky ©   (26.07.04 10:08) [10]

А что Вы подрузамеваете под выражением:
- "Да нет как раз в руках, правда не только в них".

И все-таки, хотелось бы получить ответ по делу.


 
Думкин ©   (2004-07-26 10:23) [12]

> ord(copy(text,t,1))

нельзя к строкам. ord(text[t])
хотя чем не нравится [1]? Только с

var c:char;
begin
c:="T";
Edit1.Text:=IntToHex(Ord(c),2)
end;


 
GEN++ ©   (2004-07-26 10:32) [13]


const
Text="My text";
var
S:string;
X,n,adr:word;
begin
    adr:=$8002;
     S:=":"+intToHex(length(text,2)+inToHex(adr,4)+"01";
     for n:=1 to length(Text) do
       S:=S+intToHex(ord(text[n]);
    //дальше считаете контрольную сумму идобавляете к S
    //в качестве text может быть строка из Edit, Memo и т.п.
end;


 
sdw_syscoder   (2004-07-26 10:33) [14]

Думкин ©   (26.07.04 10:23) [12]

Ну а как тогда привести тип String к Char?


 
Думкин ©   (2004-07-26 10:36) [15]

> [14] sdw_syscoder   (26.07.04 10:33)

Ты через строчку читаешь?
Я пошел обедать, дабы не захлебнуться с голодухи и.....


 
GEN++ ©   (2004-07-26 10:44) [16]

ошибка:
S:=S+intToHex(ord(text[n]);
надо так:
S:=S+intToHex(ord(text[n],2);


 
sdw_syscoder   (2004-07-26 10:46) [17]

GEN++ ©   (26.07.04 10:32) [13]

Все работает, БЛАГОДАРЮ Вас за помощь! Дальше разбирусь сам.

Хотел бы поинтересоваться, в каком направлении, Вы работаете с этим форматом файла, т.е где применяете?


 
Anatoly Podgoretsky ©   (2004-07-26 10:49) [18]

For T := 0 to Count do S := S + IntToHex(ord(copy(text,t,1)),2);

Это цикл по строкам, плюс выход за границы списка


 
GEN++ ©   (2004-07-26 10:56) [19]

>sdw_syscoder  
После линкера Asm или Си формируется выходной файл в
формате Intel Hex для загрузки во Flash память PIC процессора.
Если что-либо интересует еще, чтобы не "флеймить ветку", пишете
на мой E mail
 e_goryunov@mail.ru


 
sdw_syscoder   (2004-07-26 10:58) [20]

Для Anatoly Podgoretsky ©   (26.07.04 10:49) [18]

Да, я согласен, только как тут не делай, тип String не в масть здесь.



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.039 c
14-1090486247
syte_ser78
2004-07-22 12:50
2004.08.08
Загадка


10-1026384652
А. Н. Оним
2002-07-29 17:34
2004.08.08
Возврат DCOM сервером строки


14-1090473602
syte_ser78
2004-07-22 09:20
2004.08.08
Есть ли негры блондины?


3-1089719178
denis24
2004-07-13 15:46
2004.08.08
adotable1.FieldByName( fl_prov ).Asboolean


14-1090331602
Ega23
2004-07-20 17:53
2004.08.08
О кнопочках