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

Вниз

Помогите с преобразованием типов   Найти похожие ветки 

 
DukeArtem ©   (2004-07-05 00:21) [0]

Всем привет!
Идея: Перевести текст из "текст бокса" (допустим edit1.text) в числовую строку...
Требование: через функцию Chr(у неё тип Byte)...
Что мне надо из этого: понять как из типа "текст бокса" сделать подходящим для этой функции (Chr)
Что получилось: Нет возможности перевести.(не знаю команды или как)
Просьба: Подскажите, плииз, но только это; нерасказывая остального, меня прёт до всего самому доходить (правда с маленькой помошью...):@)
З.Ы. Буду благодарен, любому, кто шевелнёт извилиной, по этому поводу!


 
DrPass ©   (2004-07-05 00:25) [1]

Числовая строка - это звучит круто.
Только функция chr выполняет обратный (в отношении "текст бокса"/*это тоже круто звучит*/) перевод - чисел в символы.
Может, функция strtoint? Или val на худой конец?


 
SergP ©   (2004-07-05 01:10) [2]


>  DukeArtem ©   (05.07.04 00:21)


Ты приведи пример чтобы мы поняли что в что ты хочешь перевести.
Например допустим у тебя в edit1.text есть строка "Я Вася Пупкин"

покажи что должно быть после перевода этого  "в числовую строку"...


 
имя   (2004-07-05 01:20) [3]

Удалено модератором
Примечание: Отдохни


 
Andy BitOff ©   (2004-07-05 01:47) [4]


>..Khabibulin   (05.07.04 01:20) [3]


А ты такой умный, тебе череп не жмет?

Сам таким не был? Или уже родился ВСЁ на свете зная.


 
@BraIN ©   (2004-07-05 02:27) [5]

> А ты такой умный, тебе череп не жмет?

У него он отсутствует как класс. Вместе с содержимым.


 
TUser ©   (2004-07-05 02:36) [6]

строку в чсло - например Val.
ф-ция, обратная chr - ord


 
Andy BitOff ©   (2004-07-05 03:07) [7]


>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;


 
GuAV ©   (2004-07-05 03:18) [8]


> и исключения не генерирует. ИМХО удобнее.

ИМХО, исключение - удобная вещь, и ими нужно уметь пользоваться, а не обходится без них. Сроку в число удобнее всего strtoint/strtofloat. Обратно - формат-рулез. Все ИМХО.


 
Andy BitOff ©   (2004-07-05 03:22) [9]

Тьфу, в коде лажу написал. И исходя из сабжа так, наверное.

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;


 
Andy BitOff ©   (2004-07-05 03:30) [10]

А ИМХО и не надо отказываться от исключений, но ИМХО в данном, конкретном случае можно. Ведь даже в примере, который я тут накарябал есть IntToStr(Code). ИМХО надо знать где как написать. ИМХО :)


 
GuAV ©   (2004-07-05 03:45) [11]

а ИМХО даже в данном примере не помешало бы заместо

>   MessageDlg("Error: " + IntToStr(Code), mtWarning, [mbOk],  0)

raise EЧеготоТам.CreateFmt("Error: %d on convering %s",[Code, Edit1.Text]);

в этом случае числа нет => дальше делать нефиг => проходим все finally и выходим в except - который отобразит сообщение об ошибке.

> ИМХО надо знать где как написать. ИМХО :)

ИМХО, моё ИМХО аналогично этому ИМХО :)


 
DukeArtem ©   (2004-07-05 12:44) [12]

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)
А ты хохол недоношенных, недобитый аборт хомяк, просто грубиян...
*******************************}
Остальные: вы хорошие мысли кидаете, но мне до них далеко, сами видите; что-нибудь по проще (я хоть и не совсем новичёк, но в другой области, с этой темой у меня, всегда были проблема, так что извеняйте за ошибки...)
З.Ы. Спасибо!


 
Cosinus ©   (2004-07-05 13:26) [13]

// Функция перевода строки из 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 20:12) [14]

Ну там я нашёл пример:
"
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


 
GEN++ ©   (2004-07-05 23:42) [15]


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;


 
Denisww ©   (2004-07-06 00:25) [16]

ака аж зачитался


 
Palladin ©   (2004-07-06 01:14) [17]


> GEN++ ©   (05.07.04 23:42)

это немножечко не hex


> [14] DukeArtem ©   (05.07.04 20:12)

а справку иногда нужно читать


 
DukeArtem ©   (2004-07-06 11:55) [18]

Спасиб всем, общий смысл понял, остальное надо самому догонять.
Palladin ©   (06.07.04 01:14)  
А справку я читаю, но её много....


 
GEN++ ©   (2004-07-06 20:03) [19]

>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


 
SergP ©   (2004-07-06 21:56) [20]

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;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.034 c
14-1088083337
Григорьев Антон
2004-06-24 17:22
2004.07.18
Эх! Читается, как музыка!


14-1088430584
ProstoMan
2004-06-28 17:49
2004.07.18
В моей программе создается много потоков...


1-1089026451
ORMADA
2004-07-05 15:20
2004.07.18
Пакеты


4-1086525564
Islander
2004-06-06 16:39
2004.07.18
Хендл окна, висящего поверх других на экране и не активного


3-1088146304
denis24
2004-06-25 10:51
2004.07.18
Отмена показа движения курсора в grid





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