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

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

Помогите с преобразованием типов [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 на худой конец?


Наверх

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