Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.24;
Скачать: CL | DM;

Вниз

Подключить внешний файл как строковое значение переменной   Найти похожие ветки 

 
Kirill ©   (2011-04-17 09:05) [0]

Добрый день, подскажие, как проще реализовать сабж?

Задача: есть файл updatedb.inc. Хочу все содержимое его (каждая строка, для удобства, отдельный запрос к базе).
Необходимо все это на этапе компиляции задать как значение константе или переменной.


 
Anatoly Podgoretsky ©   (2011-04-17 10:03) [1]

Чего?


 
oldman ©   (2011-04-17 10:09) [2]


> на этапе компиляции


чего-чего?


 
CrytoGen   (2011-04-17 12:35) [3]

из близкого только в ресурсы


 
sniknik ©   (2011-04-17 13:12) [4]

на D7 это нифига не проще, их еще компилировать до включения придется... копипаст содержимого куда нибудь в CommandText/Text компонента куда проще.


 
CrytoGen   (2011-04-17 13:22) [5]

На D7 нужно просто тупо создать файл со списком подключаемых файлов и добавить его в проект. Ничего компилировать не нужно.


 
sniknik ©   (2011-04-17 14:16) [6]

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


 
Andy BitOff ©   (2011-04-17 14:59) [7]

А почему не сделать так
unit blablabla;
interface
const
 bla1: "somestring1";
 bla2: "somestring2";
 bla3: "somestring3";
 bla4: "somestring4";


 
Andy BitOff ©   (2011-04-17 15:00) [8]

или я чего-то не понял?


 
sniknik ©   (2011-04-17 16:25) [9]

> или я чего-то не понял?
у него файл скрип из запросов для обновления базы, откуда получает неважно, может генератор какой использует, т.е. там тогда где то еще должно быть что то вроде, -
ADOCommand.CommandText:= bla1;
ADOCommand.Execute;
ADOCommand.CommandText:= bla2;
ADOCommand.Execute;
и т.д.
а он хочет это все разом, типа получил файл положил рядом, скомпилировал программу, готово.

список запросов, п принципе можно и пакетом, и вроде бы тут тот самый случай (он в вопросе не разделяет, не говорит, что нужно разделять на команды), и можно брать весь файл на исполнение, но он не хочет чтобы файл лежал рядом с готовой программой, хочет включить внутрь... ресурсы подходят, там 5 строк кода извлечь и выполнить, но тогда нужно следить за актуальностью включенного... за измененными внешними файлами D7 не следит, только за изменением самого ресурсного файла... в общем. ИМХО, проще все таки в дизайне, в отдельный компонент ADOCommand в редакторе CommandText переносить да и все...

p.s. не говорю, что  другие варианты сложные (как тут многие слово "проще" понимают), но 1 строчка кода (только выполнить уже вложенное), и ненужность слежения за чем то, проще, чем такая необходимость и 5 строк кода...


 
KSergey ©   (2011-04-18 14:41) [10]

>  Подключить внешний файл как строковое значение переменной

В принципе - возможно.

procedure TForm1.Button12Click(Sender: TObject);
begin
  Edit3.Text :=
{$INCLUDE a.inc}
;
end;


Файл a.inc содержит:

"text from file"

Но:
1) длина константных строк в дельфи ограничена 255 символов, это надо учитывать
2) всего 1 строка, причем ее в подключаемом файле надо взять в апострофы.

Можно, конечно, просто в паскаль-синтаксисе оформлять подключаемый файл, на сколько удобно это - вопрос.
Можно еще на Build Before Step настроить конвертирование просто файла с набором строк в нужный синтаксис любой подручной (или самописанной) утилитой.
(Build Before Step - эдесь это опции среды сборки, позволяющие выполнять команды ОС при билде проекта (до собственно билда, в данном случае). Правда, в Д7 они отсутствуют)


 
_Юрий   (2011-04-19 18:58) [11]


> 1) длина константных строк в дельфи ограничена 255 символов,
>  это надо учитывать


Не ограничена.


>  Edit3.Text :=
> {$INCLUDE a.inc}
> ;

Не вижу никаких проблем.


 
Kirill ©   (2011-04-19 23:00) [12]

Всем большое спасибо и за подсказки. Сделал так:

 fFullSQLUpdate :=
 {$I updatedb.inc};


 
antonn ©   (2011-04-20 14:20) [13]


> у него файл скрип из запросов для обновления базы, откуда
> получает неважно, может генератор какой использует, т.е.
>  там тогда где то еще должно быть что то вроде, -
> ADOCommand.CommandText:= bla1;
> ADOCommand.Execute;
> ADOCommand.CommandText:= bla2;
> ADOCommand.Execute;

а мне показалось там что то типа такого в файле:
select * from table


 
KSergey ©   (2011-04-20 14:20) [14]

> _Юрий   (19.04.11 18:58) [11]
> Не ограничена.

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

procedure TForm1.Button13Click(Sender: TObject);
var
   s: STring;
begin
   s := "1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM <>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVB NM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXC VBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?";
end;


 
Германн ©   (2011-04-20 15:45) [15]


> KSergey ©   (20.04.11 14:20) [14]
>
> > _Юрий   (19.04.11 18:58) [11]
> > Не ограничена.
>
> За все версии дельфи говорить не буду, может в самых свежих
> что и изменилось.

Термин "литерал" вам известен?


 
_Юрий   (2011-04-20 19:13) [16]


> KSergey ©   (20.04.11 14:20) [14]


Ага. Длина литерала ограничена, длина константы - нет.

const s =  "1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM  <>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVB  " + "NM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZ XC VBNM<>?1234567890QWERTYUIOP{}LKJHGFDSAZXCVBNM<>?";


 
Anatoly Podgoretsky ©   (2011-04-20 20:40) [17]

Продолжай. И укажи где здесь константа и где литерал


 
_Юрий   (2011-04-20 21:43) [18]

Где здесь константа - написано. А где литералы - понятно.
Должно быть наверно



Страницы: 1 вся ветка

Текущий архив: 2011.07.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.005 c
8-1214048535
Al
2008-06-21 15:42
2011.07.24
Как сделать в функции динамическую переменную?


15-1302075725
Loginov Dmitry
2011-04-06 11:42
2011.07.24
Windows Server 2008 - как избавиться от UserProfile WINDOWS


15-1302406131
TUser
2011-04-10 07:28
2011.07.24
А на чем мозилла деньги делает?


1-1260966363
Andrews
2009-12-16 15:26
2011.07.24
Компонент для окна с настройками программы


2-1303311831
>|<
2011-04-20 19:03
2011.07.24
Quick Report: дочернее окно отчета не становится Maximized