Форум: "Основная";
Текущий архив: 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