![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с преобразованием типов [D6, D7, WinXP]
DukeArtem © (2004-07-05 00:21:00)Всем привет!
Идея: Перевести текст из "текст бокса" (допустим edit1.text) в числовую строку...
Требование: через функцию Chr(у неё тип Byte)...
Что мне надо из этого: понять как из типа "текст бокса" сделать подходящим для этой функции (Chr)
Что получилось: Нет возможности перевести.(не знаю команды или как)
Просьба: Подскажите, плииз, но только это; нерасказывая остального, меня прёт до всего самому доходить (правда с маленькой помошью...):@)
З.Ы. Буду благодарен, любому, кто шевелнёт извилиной, по этому поводу!
SergP (2004-07-06 21:56:00) [1]function ConvertString(const Source: String): String;
var
i: Integer;
begin
SetLength(Result,Length(Source)*3);
for i := 1 to Length(Source) do move((IntToHex(Ord(Source[i]),2)+' ')[1],Result[3*i-2],3);
end;
GEN++ (2004-07-06 20:03:00) [2]>Palladin © Согласен, исправляюсь:
procedure TForm1.Button1Click(Sender: TObject);
var
S,S1,S2:string;
i:word;
begin
S:=edit1.Text;
S1:='';
S2:='';
for i:=1 to length(S) do
begin
S1:=S1+inttostr(ord(S[i]))+' ';
S2:=S1+inttohex(ord(S[i]),2)+' ';
end;//for i:=1 to length(S)
label1.Caption:=S1;
label2.Caption:=S2;
end;//procedure
DukeArtem (2004-07-06 11:55:00) [3]Спасиб всем, общий смысл понял, остальное надо самому догонять.
Palladin © (06.07.04 01:14)
А справку я читаю, но её много....
Palladin (2004-07-06 01:14:00) [4]
> GEN++ © (05.07.04 23:42)
это немножечко не hex
> [14] DukeArtem © (05.07.04 20:12)
а справку иногда нужно читать
Denisww (2004-07-06 00:25:00) [5]ака аж зачитался
GEN++ (2004-07-05 23:42:00) [6]
procedure TForm1.Button1Click(Sender: TObject);
var
S,S1:string;
i:word;
begin
S:=edit1.Text;
S1:='';
for i:=1 to length(S) do
S1:=S1+inttostr(ord(S[i]))+' ';
label1.Caption:=S1;
end;
DukeArtem (2004-07-05 20:12:00) [7]Ну там я нашёл пример:
"
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Label1.Caption := '';
for i := 1 to Length(Edit1.Text) do
begin
try
Label1.Caption := Label1.Caption + IntToHex(Edit1.Text[i],2) + ' '; //*
except
Beep;
end;
end;
end;
"
Но он не хочут работать пишет в главной строчке(помеченна *),
There is no overloaded version of '<element>' that can be called with these arguments
З.Ы. Я знаю, что я делаю,что-то не так, но вот, что.
З.З.Ы. Растроенный своей тупостью, но благодарный DukeArtem
Cosinus (2004-07-05 13:26:00) [8]// Функция перевода строки из N-символов в ее HEX-представление из N*2 символов
// Первый символ становиться первым байтом
// Пример: StrToHex('0123':string)='30313233':string
function StrToHexN(const Value: string): string;
var
n: Integer;
begin
Result := '';
for n := 1 to Length(Value) do
Result := Result + IntToHex(Byte(Value[n]), 2);
end;
DukeArtem (2004-07-05 12:44:00) [9]SergP © (05.07.04 01:10)
Ну допустим если есть строка "I am Vasya Pupkin", то должно быть так - "49 61 6d 56 61 73 79 61 50 75 70 6b 69 6e", вроде бы!
Вот я и не знаю как это сделать (точнее как брать по одной букве это просто а вот как её перевести...)
{******************************
..Khabibulin (05.07.04 01:20)
А ты хохол недоношенных, недобитый аборт хомяк, просто грубиян...
*******************************}
Остальные: вы хорошие мысли кидаете, но мне до них далеко, сами видите; что-нибудь по проще (я хоть и не совсем новичёк, но в другой области, с этой темой у меня, всегда были проблема, так что извеняйте за ошибки...)
З.Ы. Спасибо!
GuAV (2004-07-05 03:45:00) [10]а ИМХО даже в данном примере не помешало бы заместо
> MessageDlg('Error: ' + IntToStr(Code), mtWarning, [mbOk], 0)
raise EЧеготоТам.CreateFmt('Error: %d on convering %s',[Code, Edit1.Text]);
в этом случае числа нет => дальше делать нефиг => проходим все finally и выходим в except - который отобразит сообщение об ошибке.
> ИМХО надо знать где как написать. ИМХО :)
ИМХО, моё ИМХО аналогично этому ИМХО :)
Andy BitOff (2004-07-05 03:30:00) [11]А ИМХО и не надо отказываться от исключений, но ИМХО в данном, конкретном случае можно. Ведь даже в примере, который я тут накарябал есть IntToStr(Code). ИМХО надо знать где как написать. ИМХО :)
Andy BitOff (2004-07-05 03:22:00) [12]Тьфу, в коде лажу написал. И исходя из сабжа так, наверное.
var
a:byte;
code:integer;
begin
Val(Edit1.Text, a, Code);
if Code <> 0 then
MessageDlg('Error: ' + IntToStr(Code), mtWarning, [mbOk], 0)
else
MessageDlg('Нет Error ::: a='+Chr(a), mtConfirmation, [mbOk], 0);
end;
GuAV (2004-07-05 03:18:00) [13]
> и исключения не генерирует. ИМХО удобнее.
ИМХО, исключение - удобная вещь, и ими нужно уметь пользоваться, а не обходится без них. Сроку в число удобнее всего strtoint/strtofloat. Обратно - формат-рулез. Все ИМХО.
Andy BitOff (2004-07-05 03:07:00) [14]
>DrPass © (05.07.04 00:25) [1]
>Или val на худой конец?
Почему же на худой конец. Прекрасная функция, точнее процедура. Я бы как раз написал на оборот. Val, ну или на худой конец IntToStr.
Val, вроде и работает быстрее (хотя могу ошибаться) и исключения не генерирует. ИМХО удобнее.
var
I, Code: Integer;
begin
Val(Edit1.Text, I, Code);
if Code <> 0 then
MessageDlg('Error: ' + IntToStr(Code), mtWarning, [mbOk], 0, mbOk);
else
MessageDlg('Нет Error', mtConfirmation, [mbOk], 0, mbOk);
end;
TUser (2004-07-05 02:36:00) [15]строку в чсло - например Val.
ф-ция, обратная chr - ord
@BraIN (2004-07-05 02:27:00) [16]> А ты такой умный, тебе череп не жмет?
У него он отсутствует как класс. Вместе с содержимым.
Andy BitOff (2004-07-05 01:47:00) [17]
>..Khabibulin (05.07.04 01:20) [3]
А ты такой умный, тебе череп не жмет?
Сам таким не был? Или уже родился ВСЁ на свете зная.
(2004-07-05 01:20:00) [18]Удалено модератором
Примечание: Отдохни
SergP (2004-07-05 01:10:00) [19]
> DukeArtem © (05.07.04 00:21)
Ты приведи пример чтобы мы поняли что в что ты хочешь перевести.
Например допустим у тебя в edit1.text есть строка 'Я Вася Пупкин'
покажи что должно быть после перевода этого "в числовую строку"...
DrPass (2004-07-05 00:25:00) [20]Числовая строка - это звучит круто.
Только функция chr выполняет обратный (в отношении "текст бокса"/*это тоже круто звучит*/) перевод - чисел в символы.
Может, функция strtoint? Или val на худой конец?