20.11.2017, 14:49 [+3 UTC]
в нашей команде: 2 271 чел. | участники онлайн: 9 (рекорд: 21)

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

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

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

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

Форум:
20.11.2017, 14:46

Последний вопрос:
20.11.2017, 14:10

Последний ответ:
20.11.2017, 11:49

Последняя рассылка:
20.11.2017, 06:15

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

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

Наша кнопка:

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

Отзывы о нас:
01.08.2012, 19:33 »
korsar
Благодарю за хороший ответ. А насчёт 30 и более тысяч всё-таки с вами не соглашусь, уж больно просто и узок круг задач, требуемый от ноутбука для такой большой суммы. Для всего остального у меня есть комп smile [вопрос № 186479, ответ № 271372]

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

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

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

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

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

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

Консультация онлайн # 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

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

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

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