![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с большими строковыми константами
StriderMan © (2007-05-16 10:14:00)есть строковая константа более 7000 строк, килобайт 280 примерно (SQL скрипт).
При компиляции делфи съедает около 800 мегабайт памяти, иногда виснет напрочь. Также подобное иногда случается при РЕДАКТИРОВАНИИ модуля - вываливаются часы и та же истоирия с памятью.
пробовал объявлять как resourcestring- то же самое.
пару раз получилось получить сообщение об ошибке типа
unit contains too many constants, make procedure shortly.
как быть? не хочется вытаскивать скрипт в отдельный файл.
StriderMan (2007-05-16 12:09:00) [1]
> Jeer © (16.05.07 12:06) [14]
> Стратегическая ошибка.
просто раньше скрипты были на порядок меньше.
Jeer (2007-05-16 12:06:00) [2]
> на протяжении многих версий все компилировали в экзешник,
> и теперь менять подход как-то не улыбается.
Стратегическая ошибка.
StriderMan (2007-05-16 12:05:00) [3]гы, в начинающие загнали :)
значит баги в Delphi теперь в начинающих обсуждаются?
Не спорю, такие константы - это экстремально, но хелп ничего не говорит о том что их не стоит использовать. с другой стороны - 300 кб это смешно по современным меркам.
а между тем кроме внешних файлов дельного решения никто не подсказал.
StriderMan (2007-05-16 11:56:00) [4]
> clickmaker © (16.05.07 11:21) [8]
> SQL скрипт в виде нее оформить
как говорится, те де яйца только в профиль :)
объясню подробнее.
у клиента есть база данных со структурой версии Х
программа должна отконвертить ее до версии Y. Для этого существует некий скрипт X->Y.
если делать ХП то возникает вопросы:
1. ХП надо сначала создать в базе версии Х, для этого скрипт все равно надо как-то в нее передать
2. насколько я знаю, изменять метаданные из ХП нельзя (FireBird 1.5).
3. В скрипте иногда делается RECONNECT. Без него не все операции коректно можно выполнить.
StriderMan (2007-05-16 11:35:00) [5]
> DrPass © (16.05.07 11:26) [10]
> А вообще это насилие над компилятором. Что он тебе сделал-то?
Просто ему не повезло попасть в мои мозолистые руки :)
> SpellCaster (16.05.07 11:22) [9]
> Гм, а что мешает хранить скрипт в отдельном файле
лишние файлы не хочется плодить, но если ничего не останется другого - придется так. на протяжении многих версий все компилировали в экзешник, и теперь менять подход как-то не улыбается.
DrPass (2007-05-16 11:26:00) [6]
> Также подобное иногда случается при РЕДАКТИРОВАНИИ модуля
> - вываливаются часы и та же истоирия с памятью.
Ну, тут можно посоветовать отключить все опции Code Insight - тогда он не будет делать прекомпиляцию во время редактирования. А вообще это насилие над компилятором. Что он тебе сделал-то?
SpellCaster (2007-05-16 11:22:00) [7]Гм, а что мешает хранить скрипт в отдельном файле и динамически подгружать его через Query.SQL.LoadFromFile?
clickmaker (2007-05-16 11:21:00) [8]
> как ХП может помочь в сабж'е?
SQL скрипт в виде нее оформить
StriderMan (2007-05-16 11:10:00) [9]
> clickmaker © (16.05.07 11:03) [6]
> хранимая процедура
я знаю что такое stored proc, спасибо
как ХП может помочь в сабж'е?
clickmaker (2007-05-16 11:03:00) [10]хранимая процедура
StriderMan (2007-05-16 11:02:00) [11]
> clickmaker © (16.05.07 10:53) [4]
> а может это... stored proc?
не понял мысль.
clickmaker (2007-05-16 10:53:00) [12]а может это... stored proc?
StriderMan (2007-05-16 10:31:00) [13]
> Loginov Dmitry © (16.05.07 10:28) [1]
> Как же ты ее вручную набивал-то хоть?
круглосуточно целый месяц набивал :))
скрипт предназначен для конвертирования структуры БД от одной версии до другой. Сгенерен Database Comparer'ом.
> Клади в базу
смысл? проще в файлик тогда.
Loginov Dmitry (2007-05-16 10:28:00) [14]> есть строковая константа более 7000 строк, килобайт 280
> примерно (SQL скрипт).
Как же ты ее вручную набивал-то хоть?
Jeer (2007-05-16 10:28:00) [15]Клади в базу