Это наверное вопрос очень простой, но я начинающий программист и не могу разобраться. Как написать программу,
которая выводит код символа. Как здесь обойтись без преобразование, или как преобразовать переменную "с" из строчечного в символьный тип?
var
b:Integer;
c:char;
begin
Edit1.Text:=c;
b:=ord(c);
Label1.Caption := IntToStr(b);
end;
Как преобразовать строковый тип в символьный
Модератор: Модераторы
-
Alex_Star7210
- незнакомец
- Сообщения: 2
- Зарегистрирован: 13.02.2017 19:10:56
НикакКак здесь обойтись без преобразование
не корректноEdit1.Text:=c;
что нужно получить в итоге?
Если код символа, то Ord(C:Char) именно его и возвращает.
Если необходимо отловить код по нажатию в Edit1, то есть смысл использовать событие onkeydown (или up), которое на вход получает не символ, а именно код
Код: Выделить всё
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
label1.Caption:=inttostr(key);
end; Key, в данном случае, и есть код...
Смотри, понять все очень просто:
Компьютер - это всего лишь калькулятор, такой же как у бухгалтера на столе, но с гораздо большими возможностями: больше памяти, больше математических преобразований, на много быстрее.. работа со звуком и видео.. но это калькулятор..
На самом деле компьютер не понимает строку так как мы её читаем... нет и символа - все это для него числа, которые лежат в определенных ячейках памяти. Мы сами условились, что данные числа есть закодированная буква - символ(код символа). А набор этих букв есть строка(массив букв, он же массив цифр для компьютера). С ними он работает также как как с числами - есть функции которые обрабатывают эти данные, подразумевая что это строка - поиск, прибавление, замена.. перевод в гугле.
Ровно также работает с видео графикой и звуком.
Сущность программиста заключается в том, что он пишет программу которая обрабатывает эти данные и получает некий результат..
Byte: значение от 0..255
Char(оно же Byte, #0..#255).. #- это символ для компилятора, что тут не цифра, а символ.. и операции должен производить как с символом..
правда в UTF8 - Char от #0..#65535
если нужно из Byte -> Char то есть операция Byte:=Ord(Char) и наоборот Char:=Ord(Byte) .. На самом деле Ord и Char - не преобразуют, они просто копируют, но в тоже время говорят компилятору что данное значение точно должно быть символом или цифрой.. так ему спокойнее.
String (строка) это массив Char - работа также как с обычным массивом.
Char:=String[index] и String[index]:=Char.
Добавлено спустя 14 минут 53 секунды:
s:=Edit1.Text; - Edit1.Text - это есть string, поэтому копируем в переменную s(оно же string)
for i:=1 to lenght(s) do - пробегаем по всему массиву s, для извлечения букв Char в нем
c:=s[i]; - извлекаем из массива букв под индексом i и копируем в символьную переменную c
b:=ord(c); - преобразуем в число(byte) из c(char)
Memo1.Text :=Memo1.Text +#9+IntToStr(b); - Memo1.Text прибавим в конец (Memo1.Text+) такое значние #9 символ табуляции и строковое значение (IntToStr - преобразовании числа в его строковой аналог);
вся сущность компьютерного мира в клипе: Kraftwerk 3D - Numbers / Computer World
https://www.youtube.com/watch?v=GZHQQ0f1qKY
Компьютер - это всего лишь калькулятор, такой же как у бухгалтера на столе, но с гораздо большими возможностями: больше памяти, больше математических преобразований, на много быстрее.. работа со звуком и видео.. но это калькулятор..
На самом деле компьютер не понимает строку так как мы её читаем... нет и символа - все это для него числа, которые лежат в определенных ячейках памяти. Мы сами условились, что данные числа есть закодированная буква - символ(код символа). А набор этих букв есть строка(массив букв, он же массив цифр для компьютера). С ними он работает также как как с числами - есть функции которые обрабатывают эти данные, подразумевая что это строка - поиск, прибавление, замена.. перевод в гугле.
Ровно также работает с видео графикой и звуком.
Сущность программиста заключается в том, что он пишет программу которая обрабатывает эти данные и получает некий результат..
Byte: значение от 0..255
Char(оно же Byte, #0..#255).. #- это символ для компилятора, что тут не цифра, а символ.. и операции должен производить как с символом..
правда в UTF8 - Char от #0..#65535
если нужно из Byte -> Char то есть операция Byte:=Ord(Char) и наоборот Char:=Ord(Byte) .. На самом деле Ord и Char - не преобразуют, они просто копируют, но в тоже время говорят компилятору что данное значение точно должно быть символом или цифрой.. так ему спокойнее.
String (строка) это массив Char - работа также как с обычным массивом.
Char:=String[index] и String[index]:=Char.
Добавлено спустя 14 минут 53 секунды:
Код: Выделить всё
var
i:Integer;
c:char;
s:string;
begin
s:=Edit1.Text;
for i:=1 to lenght(s) do begin
c:=s[i];
b:=ord(c);
Memo1.Text :=Memo1.Text +#9+IntToStr(b);
end;
end;
s:=Edit1.Text; - Edit1.Text - это есть string, поэтому копируем в переменную s(оно же string)
for i:=1 to lenght(s) do - пробегаем по всему массиву s, для извлечения букв Char в нем
c:=s[i]; - извлекаем из массива букв под индексом i и копируем в символьную переменную c
b:=ord(c); - преобразуем в число(byte) из c(char)
Memo1.Text :=Memo1.Text +#9+IntToStr(b); - Memo1.Text прибавим в конец (Memo1.Text+) такое значние #9 символ табуляции и строковое значение (IntToStr - преобразовании числа в его строковой аналог);
вся сущность компьютерного мира в клипе: Kraftwerk 3D - Numbers / Computer World
https://www.youtube.com/watch?v=GZHQQ0f1qKY
Последний раз редактировалось olegy123 14.02.2017 08:56:36, всего редактировалось 2 раза.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Deimos писал(а):Никак
Вообще-то это немножко ложь.Способ есть -- оператор absolute
Код: Выделить всё
Var
Ch:Char;
Code:Byte absolute Ch;
Лекс Айрин
И чуток попозже ловить необъяснимые глюки, списывая их на сырость фрипаскаля.
есть Ord и Char, они будут работать независимо не от чего. зачем чтото еще придумывать?
И чуток попозже ловить необъяснимые глюки, списывая их на сырость фрипаскаля.
есть Ord и Char, они будут работать независимо не от чего. зачем чтото еще придумывать?
Последний раз редактировалось zub 14.02.2017 11:26:41, всего редактировалось 1 раз.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
zub, я не говорю, что это стоит делать... а лишь, что можно. И естественно, еще аккуратнее чем обычно.
Понятное дело, что как только программист начинает пользоваться подобной "оптимизацией", то он сам отвечает за последствия... впрочем, есть куча и более используемых способов выстрелить себе в ногу. Но это мало кого останавливает.
Понятное дело, что как только программист начинает пользоваться подобной "оптимизацией", то он сам отвечает за последствия... впрочем, есть куча и более используемых способов выстрелить себе в ногу. Но это мало кого останавливает.
-
Alex_Star7210
- незнакомец
- Сообщения: 2
- Зарегистрирован: 13.02.2017 19:10:56
olegy123 Спасибо. Получилось.
