Главная страница
    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.49 MB
Время: 0.043 c
3-1089962522
denis24
2004-07-16 11:22
2004.08.08
Редактирование в гриде


1-1090838969
Фагот
2004-07-26 14:49
2004.08.08
Планировщик


1-1090613624
ИМХО
2004-07-24 00:13
2004.08.08
TMemoryStream.Memory


1-1090922659
FS-DOS
2004-07-27 14:04
2004.08.08
rave


1-1090528348
AlexR
2004-07-23 00:32
2004.08.08
Как отследить вызов popup меню в ТаскБаре





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