Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

НАДО ПРЕОБРАЗОВАТЬ !!! Y --> $XX [D6, WinME, WinXP]


sdw_syscoder ©   (2004-07-25 23:35:00) 

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


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

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

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


GEN++   (2004-07-26 10:56:00) [2]

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


Anatoly Podgoretsky   (2004-07-26 10:49:00) [3]

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

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


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

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

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

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


GEN++   (2004-07-26 10:44:00) [5]

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


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

> [14] sdw_syscoder   (26.07.04 10:33)

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


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

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

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


GEN++   (2004-07-26 10:32:00) [8]


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;


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

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

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

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


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

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

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

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


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

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


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

Доброе утро!

Товарищи, посмотрите пожалуйста код преобразования строки с символами 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;


Fay   (2004-07-26 09:22:00) [13]

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


Anatoly Podgoretsky   (2004-07-26 09:18:00) [14]

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


Fay   (2004-07-26 09:14:00) [15]

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


Anatoly Podgoretsky   (2004-07-26 09:04:00) [16]

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


Fay   (2004-07-26 02:47:00) [17]

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


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

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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо