Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение строковых констант в программе 
V
    Опции темы
Keeper89
Дата 14.8.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Доброго времени суток!

Перейду сразу к вопросу. Как лучше и где лучше хранить строки, заголовки окон, динамические сообщения и т.п.? В INI, защищенном хранилище, реестре или еще как-то? Например, Тотал Коммандер делает это в языковых INI-файлах. 
Хотелось бы хранить эти данные в определенном месте, а при необходимости (или при загрузке приложения) загружать.
Также интересует хранение настроек (больших массивов данных, строковых массивов и т.п.).

Т.е. вопроса 2, но они смежны:
1) хранение программных констант, строк меню, окон сообщений и т.д.).
2) хранение настроек программы (строковых массивов, записей и т.п.).

Если будут примеры реализации - прекрасно.

Заранее спасибо.

Это сообщение отредактировал(а) Keeper89 - 14.8.2009, 20:03


--------------------
PM MAIL WWW   Вверх
Данкинг
Дата 14.8.2009, 19:24 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



В реестре. Но если у юзера нет прав на изменение реестра, тогда на помощь приходит INI. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Keeper89
Дата 14.8.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Данкинг, т.е. хранить сотни строк в реестре?


--------------------
PM MAIL WWW   Вверх
NightmareZ
Дата 14.8.2009, 20:16 (ссылка) |   (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: нет
Всего: 13



Я храню в xml.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Данкинг
Дата 14.8.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Нет, если сотни строк - то ответ ясен. Просто раньше (не знаю, как сейчас) одним из условий сертификации программы Microsoft'ом было хранение данных именно в реестре. Потому и говорю. smile 

Это сообщение отредактировал(а) Данкинг - 14.8.2009, 21:18


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Bose
Дата 15.8.2009, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Данкинг @  14.8.2009,  18:24 Найти цитируемый пост)
В реестре. Но если у юзера нет прав на изменение реестра, тогда на помощь приходит INI. smile  

Так не бывает. Не должно быть. Пользователь должен иметь доступ на запись в HKCU. 

Цитата(Keeper89 @  14.8.2009,  18:59 Найти цитируемый пост)
Данкинг, т.е. хранить сотни строк в реестре? 

Ни в коем случае. Лучше в любом текстовом файле, в том же ini, или xml. В чём больше нравится в том и храни.
PM MAIL WWW Skype   Вверх
~FoX~
Дата 15.8.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(Keeper89 @  14.8.2009,  19:48 Найти цитируемый пост)
больших массивов данных, строковых массивов и т.п.
, можно и в БД хранить...
Лично я пользуюсь типизированными файлами, храню многомерные массивы, больше 60 тыс. итемов. 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Keeper89
Дата 15.8.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Права на запись в принципе не нужны, т.к. в первом случае (строки в программе) данные будут только считываться.

В связи с этим вопрос: допустим необходимо вывести сообщение
Цитата

"Пользователь МАША успешно зарегистрирован."
,
 где МАША - определенная переменная. 
Или другой вариант (с 2 переносами):
Цитата

"Пользователь
МАША
успешно зарегистрирован."

Как эти строки хранить в файле (INI-например) и как ее вывести в сообщении?
smile smile

Это сообщение отредактировал(а) Keeper89 - 15.8.2009, 13:59


--------------------
PM MAIL WWW   Вверх
Данкинг
Дата 15.8.2009, 13:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Как-то так хранить (если я правильно понимаю задание):
Код

procedure to_file;
var
fff: TextFile;
fn,txt:string;
begin
 txt:='Пользователь '+chr(13)+'МАША'+chr(13)+'успешно зарегистрирован';
 fn:='i:\asssss.txt';
 assignfile(fff,fn);
 rewrite(fff);
 writeln(fff,txt);
 Closefile(fff);
end;


Это в обычном текстовом файле, разумеется. А вот если кто приведёт пример, как хранить в XML, то я тоже буду благодарен, так как с XML никак не разберусь.

Это сообщение отредактировал(а) Данкинг - 15.8.2009, 14:16


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
bems
Дата 15.8.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Код

Пользователь %s успешно зарегистрирован


Код

ShowMessage(Format(sReadFromFile, ['МАША']))

где sReadFromFile переменная куда ты заблаговременно прочитал

Это сообщение отредактировал(а) bems - 15.8.2009, 15:16


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Keeper89
Дата 15.8.2009, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



bems, а как быть со вторым случаем (число переносов не известно)? 


--------------------
PM MAIL WWW   Вверх
bems
Дата 15.8.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



не понял вопроса. А когда становится известно?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Keeper89
Дата 15.8.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Ну написал я в языковом файле вот так (пример из коммандера):
Цитата

97="Переименовать/переместить файлы (%i шт.) в:"

Если заменить это на
Цитата

97="Переименовать/переместить файлы\n (%i шт.) в:\n"

То добавится 2 переноса.

В Format я не нашел автоматического преобразования "Сишных" спецсимволов, как быть? И как это может быть реализовано в TC? smile


--------------------
PM MAIL WWW   Вверх
Qu1nt
Дата 16.8.2009, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



М?
Код

ShowMessage(StringReplace('blah\n blah\n', '\n', sLineBreak, [rfReplaceAll, rfIgnoreCase]));

PM MAIL   Вверх
bems
Дата 16.8.2009, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Или как вариант - символы переноса в файле остаются символами переноса в сообщении
(то есть если внутри кавычек - перенос это данные, если снаружи - разделитель)
Как быть если нужно иметь кавычки частью строки - не спрашивай)


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.