Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

строковые константы


Страницы:   1 2 3

Gu ©   (2011-09-01 18:58:00) 

Приложение использует много строковых констант, которые юзаются во многих его модулях. Вопрос: как будет правильнее объявить их: в начале основного модуля (все другие его юзают) в разделе Consts или в разделе Resourcestring? Есть ли между ними большие отличия и влияет ли это на скорость работы и расход памяти при загрузке приложения и работе?


_Юрий   (2011-09-06 20:24:00) [1]


> Игорь Шевченко ©   (05.09.11 23:02) [51]


Рискну предположить, что такое отделение возникло еще до ITE.
Который появился по моему в Delphi5.
Пока его не было, можно было совершить подмену юнита с константами на свой, и таким образом хоть как-то решить проблему локализации.
Если бы константы были размазаны по коду, это бы не взлетело.


Игорь Шевченко   (2011-09-05 23:02:00) [2]

_Юрий   (05.09.11 21:39) [50]


> Сейчас, думаю, они бы написали уже не так.


Не уверен. У них каждый юнит consts относится к конкретному пакету, при разделении vcl на vcl и rtl константы тоже разделились, на consts (vcl) и rtlconsts

В этих юнитах содержатся как раз локализуемые константы, может, это связано с ITE, чтобы все константы такого типа были собраны вместе, может, еще с чем, не знаю, а искать лень.

Я к тому, что у Борландов в такой организации констант есть цель.


_Юрий   (2011-09-05 21:39:00) [3]


> Игорь Шевченко ©   (04.09.11 14:24) [45]


> VCL/RTL предлагают другой путь - по юнитам (rtl,db,...)consts


Это очень старый код, с тех пор опыт человечества в программировании стал лет на 15 больше. Сейчас, думаю, они бы написали уже не так.
По resourcestring  без локализации - согласен, на мой взгляд нафиг не надо.


Eraser   (2011-09-04 21:46:00) [4]

http://matrix.kladovka.net.ru/index.php?page=downloads&categ=other&pagenum=1см. "multilang.zip". Мощнейшее и простое средство для работы с локализацией. Правда для полноценной работы я туда привинтил слабенькую поддержку коллекций, но зато теперь фактически универсальный инструмент. четвертый год работает отлично. а ITE мастдай, это с самого начало понятно. что за локализатор такой, которому исходники подавай? это противоречит всей концепции локализации проектов, т.к. обычно локализацию на аутсорс отдают.


Anatoly Podgoretsky   (2011-09-04 15:55:00) [5]

> Игорь Шевченко  (04.09.2011 15:08:47)  [47]

Без установки никак. Нужен поноценный редактор ресурсов Дельфи, то есть
видеть и изменять формы, как минимум, такой редактор есть в ITE, он есть в
автономном варианте. С ITE основная проблема - психологическое
сопротивление.


Игорь Шевченко   (2011-09-04 15:08:00) [6]

Anatoly Podgoretsky ©   (04.09.11 14:53) [46]

Я не знаю, решили ли они проблему (вроде читал, что каким-то образом решили) - есть тексты, которые надо переводить стороннему переводчику
( не знает разработчик китайского), чтобы он не имел доступа к исходным текстам и чтобы ему не надо было устанавливать программного обеспечения.


Anatoly Podgoretsky   (2011-09-04 14:53:00) [7]

> Игорь Шевченко  (04.09.2011 14:24:45)  [45]

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

А resourvestring есть смысл использовать из-за некоторой оптимальности
работы системы, но наверно ты и так это знаешь, читал наверно у Рихтера.
Потом если захочешь локализировать ничего переделывать не придется, а у ITE
локализация на уровне, не только тексты.


Игорь Шевченко   (2011-09-04 14:24:00) [8]

_Юрий   (04.09.11 13:42) [44]

VCL/RTL предлагают другой путь - по юнитам (rtl,db,...)consts

Где золотая середина ?

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


_Юрий   (2011-09-04 13:42:00) [9]

Немного не в тему

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

Поэтому я стал делать по другому: прятать константы в код, и его уже помещать в общие модули. Чаще всего подобные константы - текстовки ошибок.
Тогда  вместо, например

const
 SFileNotFound = 'Файл %s не найден';

...
if not FileExist(fileName) then
 raise EPathException.CreateFmt(SFileNotFound, [fileName]);

пишу нечто типа

type
 EPathException = class(Exception)
 public
   constructor FileNotFound(fileName: string);
 end;

constructor EPathException.FileNotFound(fileName: string);
resourcestring;
 SFileNotFound = 'Файл %s не найден';
begin
 CreateFmt(SFileNotFound, [fileName]);
end;

...
if not FileExist(fileName) then
 raise EPathException.FileNotFound(fileName);

Конструкторов может быть много - свой для каждого случая.

Если константа - какое то название, то ее лучше перенести в соответствующий класс (в виде вложенной константы, а если не позволяет версия Delphi, то в виде классовой функции). По тем же причинам.

Посмотрите, может быть вам такой подход покажется более подходящим


Германн   (2011-09-03 00:54:00) [10]

Вообще (имхо) сабж сам по себе глупый.
Ладно бы речь шла о математической обработке физического эксперимента. Или о математическом моделировании чего-то.


Германн   (2011-09-03 00:50:00) [11]


> Anatoly Podgoretsky ©   (02.09.11 16:52) [41]
>
> > Rouse_  (02.09.2011 15:39:36)  [36]
>
> а мы как бы про физическую все время вели речь.

Ну и зачем вели?
По сабжу разницы практически никакой.


Anatoly Podgoretsky   (2011-09-02 16:52:00) [12]

> Rouse_  (02.09.2011 15:39:36)  [36]

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


Anatoly Podgoretsky   (2011-09-02 16:50:00) [13]

> Юрий Зотов  (02.09.2011 15:20:34)  [34]

resourcestring именно такой, не гонится в своп, он сам часть свопа


Игорь Шевченко   (2011-09-02 16:30:00) [14]

FileMon показывает чтение в физическую память :)


Inovet   (2011-09-02 15:44:00) [15]

> [36] Rouse_ ©   (02.09.11 15:39)
> я то речь веду про виртуальную память

Так на то и виртуальная, чтобы без надобности не читать в ОЗУ. Зачем, если данные или код могут не разу не понадобиться


Inovet   (2011-09-02 15:41:00) [16]

> [34] Юрий Зотов ©   (02.09.11 15:20)
> файл как бы используется в качестве некоего свопа

Разве механизм не один и тот же что и в свопе. Просто файл и так уже на диске находится.


Rouse_   (2011-09-02 15:39:00) [17]

Да это все понятно, просто я то речь веду про виртуальную память, а не про физическую...


Юрий Зотов   (2011-09-02 15:22:00) [18]

Разве что весь файл умещается в одной странице... тогда загрузится полностью, конечно.
:o)


Юрий Зотов   (2011-09-02 15:20:00) [19]

Если я правильно понял Рихтера, то ни один файл (включая исполнимые) ПОЛНОСТЬЮ в ОЗУ никогда не грузится. Он отображается на АП процесса, а в ОЗУ грузится постранично, по мере надобности (конечно, с учетом еще и кэша страниц). То есть, сам дисковый файл как бы используется в качестве некоего свопа.


Rouse_   (2011-09-02 15:11:00) [20]


> в момент обращения к этим данным и было чтение

А FileMon его не показал... понятно.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо