20.08.2017, 20:16 [+3 UTC]
в нашей команде: 2 094 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
20.08.2017, 16:51

Последний вопрос:
18.08.2017, 23:30

Последний ответ:
17.08.2017, 18:54

Последняя рассылка:
20.08.2017, 18:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
14.05.2010, 09:11 »
jeck26
Спасибо за развёрнутый ответ. Скорей всего возьму автоматический. [вопрос № 178340, ответ № 261349]
06.03.2010, 00:29 »
Даниил Цветков
Содержательный и полный ответ. Спасибо большое [вопрос № 177048, ответ № 259911]
18.11.2010, 23:37 »
Маша Гришина
Спасибо вам огромное. Понравилось: оперативность, подробные пояснения,генератор псевдослучайных чисел!!!! Всё сразу заработало. [вопрос № 180810, ответ № 264121]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 313
mklokov
Статус: 6-й класс
Рейтинг: 87
Вадим Исаев ака sir Henry
Статус: Старший модератор
Рейтинг: 44

Перейти к консультации №:
 

Консультация онлайн # 191272
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Caesar (Посетитель)
Отправлена: 09.08.2017, 13:36
Поступило ответов: 2

Здравствуйте! Прошу помощи в следующем вопросе:
Почему в с++ я могу сделать запись вида

   char sym;
    sym=1;
    sym=sym+5;
    cout <<  sym<< endl;

а в делфи:
   char sym;
    sym:=1;
    sym:=sym+5;
    showmessage(sym);

Будет ошибка?
в делфи только так (sym:='1') т.е. я не могу оперировать с числовым представлением символа

Вопрос перенесен из раздела • С / С++
--------

• Отредактировал: Лысков Игорь Витальевич (Старший модератор)
• Дата редактирования: 09.08.2017, 14:09

Состояние: Консультация закрыта

Здравствуйте, Caesar!

О делах С-шных Вам расскажут коллеги, я о Delphi.
Delphi унаследовал от Pascal - строгую типизацию, в отличии от С. Но и такая строгость обходится, т.к. есть механизмы.
smile
См. приложение:

Код (Pascal) :: выделить код
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var
  a:^char;{указатель на тип char}
  b:^byte;{указатель на тип byte}
  c:pointer;{указатель без типа}
  d:char;{сама переменная}
begin
  { TODO -oUser -cConsole Main : Insert code here }
  d:='1';
  writeln('is one:',d);
  {работа с указателями}
  c:=@d;{получаем адрес переменной}
  a:=c;{соотносим с нужным типом}
  b:=c;
  b^:=b^+5;
  writeln('is two:',d,' char:',a^,' byte:',b^);
  {работа со стандартными функциями}
  d:=chr(ord(d)-4);
  writeln('is end:',d);
  readln;
end.


Немного об указателях:
а - указатель ссылающийся на переменную длиной один байт, тип символьный;
b - указатель ссылающийся на переменную длиной один байт, тип целый;
с - указатель ссылающийся на некоторый адрес.
Сама переменная представляет собой адрес в памяти и её длина. Компилятор проанализировав тип переменной подставляет соответствующие методы для работы с ними. Это видно в коде.

Удачи!


Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 09.08.2017, 19:01

5
нет комментария
-----
Дата оценки: 10.08.2017, 05:36

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 275191 от Вадим Исаев ака sir Henry (Старший модератор)

Здравствуйте, Caesar!
О делах Сишных.
Мы тут посоветовались с коллегами и выяснился интересный нюанс о типе char в Си++.
И в Си и в Си++ тип char - это знаковый целочисленный тип размером в 1 байт. По видимому в Си он изначально и планировался для отображения символов, однако его вид при выводе на экран целиком зависел от задаваемого формата вывода. Вот например код Си:

#include <stdio.h>
int main()
{
    char sym;

    sym=6;
    printf("%d - %c\n", sym,sym);

    return 0;
}

Там где формат вывода целочисленный, выводится именно то число, которое задано в программе - 6. а вот где формат задан как символьный - выводится его символьное представление - пики.
Всё меняется, как только мы переходим к Си++. Там считается, что про все элементарные типы cout понимает и без нас. и тип char он выводит именно как символьное представление числа. И никак иначе.


Консультировал: Вадим Исаев ака sir Henry (Старший модератор)
Дата отправки: 13.08.2017, 15:04

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 191272

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 09.08.2017, 14:09 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Экспертам раздела:

Обратите, пожалуйста, внимание на вопрос

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 2

= общий = | 09.08.2017, 14:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

Вопрос-то, как бы, по Delphi... smile

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

Вадим Исаев ака sir Henry
Старший модератор

ID: 425

# 3

 +1 
 
= общий = | 09.08.2017, 14:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

В С\С++ тип char - это вообще никакой не символ, а целочисленный тип, а с числами можно производить вычислительные операции. Он может быть интерпретирован при выводе на экран, как символ, но никаким символом на самом деле он не является.
В Pascal\Delphi тип char - это одна единственная буква и Вы с ней можете делать то, что обычно делают с буквами - например, вставить её в какое-нибудь слово или найти её в слове и удалить оттуда.
Для того, чтобы оперировать числовыми представлениями символов, надо тип-символ перевести в его числовое представление, т.е. сделать числом.

=====
Я только в одном глубоко убеждён - не надо иметь убеждений! :)

Зенченко Константин Николаевич
Модератор

ID: 31795

# 4

= общий = | 09.08.2017, 14:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Caesar:

1) используйте функции ord и chr;
2)с помощью указателей.

Caesar
Посетитель

ID: 401251

# 5

= общий = | 10.08.2017, 06:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Всем спасибо за ответы!!! smile smile smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 1.34371 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн