Как преобразовать строковый тип в символьный

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Как преобразовать строковый тип в символьный

Сообщение Alex_Star7210 » 13.02.2017 20:27:55

Это наверное вопрос очень простой, но я начинающий программист и не могу разобраться. Как написать программу,
которая выводит код символа. Как здесь обойтись без преобразование, или как преобразовать переменную "с" из строчечного в символьный тип?

var
b:Integer;
c:char;
begin
Edit1.Text:=c;
b:=ord(c);
Label1.Caption := IntToStr(b);
end;
Alex_Star7210
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.02.2017 20:10:56

Re: Как преобразовать строковый тип в символьный

Сообщение Deimos » 13.02.2017 23:39:14

Как здесь обойтись без преобразование
Никак

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, в данном случае, и есть код...
Deimos
постоялец
 
Сообщения: 169
Зарегистрирован: 17.01.2010 00:31:30

Re: Как преобразовать строковый тип в символьный

Сообщение olegy123 » 14.02.2017 09:33:46

Смотри, понять все очень просто:
Компьютер - это всего лишь калькулятор, такой же как у бухгалтера на столе, но с гораздо большими возможностями: больше памяти, больше математических преобразований, на много быстрее.. работа со звуком и видео.. но это калькулятор..

На самом деле компьютер не понимает строку так как мы её читаем... нет и символа - все это для него числа, которые лежат в определенных ячейках памяти. Мы сами условились, что данные числа есть закодированная буква - символ(код символа). А набор этих букв есть строка(массив букв, он же массив цифр для компьютера). С ними он работает также как как с числами - есть функции которые обрабатывают эти данные, подразумевая что это строка - поиск, прибавление, замена.. перевод в гугле.
Ровно также работает с видео графикой и звуком.
Сущность программиста заключается в том, что он пишет программу которая обрабатывает эти данные и получает некий результат..

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 09:56:36, всего редактировалось 2 раз(а).
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Как преобразовать строковый тип в символьный

Сообщение Лекс Айрин » 14.02.2017 09:49:16

Deimos писал(а):Никак


Вообще-то это немножко ложь.Способ есть -- оператор absolute

Код: Выделить всё
Var
     Ch:Char;
     Code:Byte absolute Ch;
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как преобразовать строковый тип в символьный

Сообщение zub » 14.02.2017 11:45:39

Лекс Айрин
И чуток попозже ловить необъяснимые глюки, списывая их на сырость фрипаскаля.
есть Ord и Char, они будут работать независимо не от чего. зачем чтото еще придумывать?
Последний раз редактировалось zub 14.02.2017 12:26:41, всего редактировалось 1 раз.
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: Как преобразовать строковый тип в символьный

Сообщение Лекс Айрин » 14.02.2017 12:26:24

zub, я не говорю, что это стоит делать... а лишь, что можно. И естественно, еще аккуратнее чем обычно.

Понятное дело, что как только программист начинает пользоваться подобной "оптимизацией", то он сам отвечает за последствия... впрочем, есть куча и более используемых способов выстрелить себе в ногу. Но это мало кого останавливает.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как преобразовать строковый тип в символьный

Сообщение Alex_Star7210 » 14.02.2017 19:30:51

olegy123 Спасибо. Получилось.
Alex_Star7210
незнакомец
 
Сообщения: 2
Зарегистрирован: 13.02.2017 20:10:56


Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

Рейтинг@Mail.ru