![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
символ: byte , из edit
Jonis_84 © (2013-03-11 10:38:00)Доброго врмени суток!Помогите пожалуйста,как из edit передать в ORD()
Var C:Byte;
begin
c:=Ord( ??????? (Edit1.Text));
label1.caption:=IntToStr(c);
Jonis_84 (2013-03-11 22:51:00) [1])))Спасибо
Ega23 (2013-03-11 22:32:00) [2]
> а с 10-й системой аналогично?
Товарищ. У тебя есть три ракушки. Ты можешь сказать: "У меня есть три ракушки", "У меня есть 3 ракушки", "У меня есть 11 ракушек (в двоичной системе)", "У меня есть 10 ракушек (в троичной системе)", "У меня есть three ракушки (на аглицком)", или "У меня есть драй ракушек на немецком".
Количество ракушек у тебя при этом не изменится, изменится только то, как ты это количество назвал собеседнику.
Вот ровно то же самое и с байтами. "Внутре" - это набор единичек и нулей. Как ты его будешь интерпретировать - это твоё личное дело, набор от этого никак не изменится.
Jonis_84 (2013-03-11 22:21:00) [3]спс,работает,а с 10-й системой аналогично?
Ega23 (2013-03-11 22:15:00) [4]Только дуракозащиту не забудь включить.
Ну там TryStrToInt, например
Ega23 (2013-03-11 22:14:00) [5]Char(StrToInt(Edit2.text))
Jonis_84 (2013-03-11 21:56:00) [6]Спасибо,отличная строчка,то что надо.
Label1.Caption := IntToStr(Ord(Edit1.Text[1]));
Подскажите пожалуйста ,а как в обратном порядке 1084=м
Ega23 (2013-03-11 21:41:00) [7]
> rad xe3
> Прости, 60 не вижу уже))))
Всё просто. коли XE, то у тебя unicode. И Edit1.text[1] - это не однобайтовый AnsiChar, а двубайтовый UnicodeChar. Отсюда -
procedure TForm35.Button1Click(Sender: TObject);
begin
Edit1.Text := 'м';
Label1.Caption := IntToStr(Ord(Edit1.Text[1]));
end;
Результат - 1084.
Теперь ты 1084 (в двоичной - 100.0011.1100) пытаешься запихнуть в байт. Соответственно, получаешь 0011.1100 в двоичной, что равно 60 в десятичной.
Jonis_84 (2013-03-11 21:18:00) [8]
> Я хоть убей не понимаю, как у тебя 69 получается.
> И версию Delphi было бы неплохо указать.
Прости, 60 не вижу уже))))
Jonis_84 (2013-03-11 21:13:00) [9]rad xe3
Ega23 (2013-03-11 20:52:00) [10]Я хоть убей не понимаю, как у тебя 69 получается.
И версию Delphi было бы неплохо указать.
Jonis_84 (2013-03-11 20:31:00) [11]в edit2 вводим код и получаем символ в label2
Jonis_84 (2013-03-11 20:30:00) [12]в Label выводим его 10-й код
brother (2013-03-11 20:21:00) [13]> получаем его 10-й код и на оброт.
символ млжет быть только один введен? причем тут лэйбол?
Jonis_84 (2013-03-11 20:19:00) [14]Требуется:
В Edit вводим символ -> получаем его 10-й код и на оброт.
требуется поддержка RU раскладки и перед тем как символ выводится в Label ,он должен быть сохранён в переменную Integer c возможностью её дальнейшего изменения
bems (2013-03-11 20:03:00) [15]символ уже не байт, это слово. но бери integer, не промахнешься
Jonis_84 (2013-03-11 19:37:00) [16]Все это конечно хорошо но появился и 3-й результат
1.
=236
c:=Ord('м');
label1.caption:=IntToStr(C);
2.
в Edit ввожу = м = 69
c:=Ord(Edit1.Text[1]);
label2.caption:=IntToStr(C);
3.
Edit1.Text := 'м';
Label1.Caption := IntToStr(Ord(Edit1.Text[1]));
= 1084
??????????????????????????????????????????????????????????????
Ega23 (2013-03-11 14:27:00) [17]
> судя по полученному результату, топикстартер пользуется
> неюникодной версией Дельфи.
Не факт, он результат Ord к байту приравнивает. А это будет 60. И склонен я подозревать, что 69 - это очепятка, у него 60 было.
Как-то так.
RWolf (2013-03-11 14:19:00) [18]судя по полученному результату, топикстартер пользуется неюникодной версией Дельфи.
Ega23 (2013-03-11 14:15:00) [19]
> это чудо... у тебя наверное дельфи с юникодом? ;)
Как у тебя пальцы повернулись напечатать-то такое? И куда модератор смотрит?
sniknik (2013-03-11 14:10:00) [20]> запихать чтото вроде
вместо str:string; напиши str:char;
> 1084. Такие дела.
это чудо... у тебя наверное дельфи с юникодом? ;)