Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

НАДО ПРЕОБРАЗОВАТЬ !!! 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
3-1089889217
Valer
2004-07-15 15:00
2004.08.08
Access, изменение содержимого запроса.


14-1090554279
ИМХО
2004-07-23 07:44
2004.08.08
Теория заговоров в большом спорте


1-1089611530
Pavelkq
2004-07-12 09:52
2004.08.08
ПрогрессБар в юните


1-1090426125
AlexR
2004-07-21 20:08
2004.08.08
Как отследить потерю фокуса


1-1090685928
fess
2004-07-24 20:18
2004.08.08
Оператор for





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский