Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 423

/ вопрос открыт /

Здравствуйте, эксперты!
Есть ли в Delphi возможность закрепить за фрагментом кода определенный идентификатор?
Чтобы не печатать каждый раз нечто вроде: price[num[x][y]][y].close, а использовать более простой идентификатор, вроде p...

telovek Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: telovek (статус: Посетитель)
Вопрос отправлен: 16 марта 2008, 16:53
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Dron

Здравствуйте, telovek!
Варианты могут быть разные... Самое простое - завести переменную такого же типа, что и price[num[x][y]][y] и обращаться к ней. Другой вариант - использовать оператор доступа with. Его удобно применять при многократном обращении к свойствам/методам одного и того же объекта:

with Form1 do
begin
  Caption:='MyForm';
  Left:=0;
  Top:=0;
end;
Т.е. всё зависит от ситуации.

Ответ отправил: Dron (статус: Студент)
Время отправки: 16 марта 2008, 17:06
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: Drozdov D.V.

Здравствуйте, telovek!
А если константу?
const
min=10;
max=60;
sun=9;
maxsun= max-min+sun;

Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 16 марта 2008, 20:55


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 20 марта 2008, 23:02; участников в обсуждении: 4.
telovek

telovek (статус: Посетитель), 16 марта 2008, 17:31 [#1]:

Здесь несколько массивов, связанных друг с другом определенным образом - price[num[x][y]][y].close
Дело в том, что данное выражение приходится использовать часто, это как "универсальный указатель" чтоли.
Каждый раз печатать такое - по меньшей мере нудно
И выглядит нечитабельно
Меня интересует может ли компилятор Delphi встретив выражение x заменить его на price[num[x][y]][y].close, чтоб мои глаза не видели этого и мозг не напрягался )
telovek

telovek (статус: Посетитель), 16 марта 2008, 18:19 [#2]:

Я уверен, что с этим вопросом столкнулся не я один.
Довольно часто возникает желание заменить участок кода, который встречается в программе не раз и не два в неизменном виде на идентификатор, чтобы не перегружать этот самый код и свой мозг.
Может есть какая-нибудь директива, но я не нашел.
-----
Уважаемые эксперты, надеюсь на Вашу помощь.
Dron

Dron (статус: Студент), 16 марта 2008, 18:22 [#3]:

Повторяющийся код выносят в подпрограмму. Чем вам здесь функция не подходит?
С уважением.
telovek

telovek (статус: Посетитель), 16 марта 2008, 18:36 [#4]:

ну так вот он повторяется не весь, а урывками )
в целом-то вопрос я думаю понятен
значит компилятор не способен на такие фокусы...
Drozdov D.V.

Drozdov D.V. (статус: 4-ый класс), 16 марта 2008, 20:58 [#5]:

Прочита форум. Создайте фаил с разными процедурами и подключайте, что необходимо.
Dron

Dron (статус: Студент), 16 марта 2008, 21:30 [#6]:

to Drozdov D.V.: а Вы вопрос вообще читали? Причём здесь константы, о которых Вы написали в ответе?

Цитата:

Создайте фаил с разными процедурами и подключайте, что необходимо.

Это тоже не в тему, кажется...
С уважением.
Drozdov D.V.

Drozdov D.V. (статус: 4-ый класс), 16 марта 2008, 21:39 [#7]:

ДА? про константы согласен но только после прочтения форума.
А вот за процедуы в тему если часть кода повторяется то можно подойти имено этим путём. Хотя по ответам я смотрел вы более грамотны.
Вадим К

Вадим К (статус: Академик), 16 марта 2008, 23:06 [#8]:

to telovek:
В Си/Си++ применяют для таких целей препроцессор. Можно постараться и прикрутить его к делфи, но это издевательство над языком.
Основываясь на своём опыте, я знаю, что если мне приходиться писать столь хитрые вложения, значит я где то ошибся в дизайне приложения.
Может вам стоит подумать о переходе на модель с классами? Если всё правильно сделать, то код станет значительно красивей. А такие комбинации с массивами характерны обычно только для сугубо математических расчётов.
Галочка "подтверждения прочтения" - вселенское зло.
telovek

telovek (статус: Посетитель), 20 марта 2008, 19:43 [#9]:

to Вадим К:
Препроцессор! Точно! Нашел инфу, спасибо. Жаль что нет такой возможности в делфи...
Хочется быть творцом и творить по своим правилам, а приходится по всеобщепризнанным (
Чтож, я подумаю о переписи все под си ради такой уникальной возможности )

to ALL: Всем спасибо, мне у вас понравилось.
Вадим К

Вадим К (статус: Академик), 20 марта 2008, 23:02 [#10]:

почему нет - всё можно. Только компилировать прийдётся с консоли. Хотя начиная с 2006 делфи, можно делать "програмы для предварительной обработки текста перед компиляцией".
Раз хочеться творить - надо творить, а не споткнувшись о первый камешок, назвать его Эверестом и, подняв ручки вверх, биться головой об Землю.

Заходите ещё:)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 18 августа 2017, 02:32
Выполнено за 0.04 сек.
Рейтинг@Mail.ru