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

Вниз

директива INCLUDE своими силами, или Собираем файл из шаблонов.   Найти похожие ветки 

 
NA ©   (2002-10-19 14:13) [0]

Вот такая задача возникла, с какой стороны лучше подобраться? При этом:
а)вставка очередного внешнего файла может производиться в разрыв строки;
б)не должно быть ограничений длины в 255 знаков (string);
в)вставки могут быть вложенными.

Просится создать MemoryStream, по идее. Но, опять же - как правильнее подобраться? И - может, есть пример, от которого можно оттолкнуться? Мне вроде не попался пока :(


 
TTCustomDelphiMaster ©   (2002-10-19 14:40) [1]

Для решения такой задачи подойдет рекурсия.

procedure IncludeFile(InStream, OutStream: TStream; Nvl: word);
var
NewInStream;
begin
// Защита от зацикливания
if Nvl >= MaxNvl then
Exit;
// Перемещение данных из InStream в OutStream с одновременной
// проверкой наличия директив include
...
// Если найдена директива include вставляем файл с этого места
if FindInclude then
try
NewInStream := TFileStream.Create(GetNewFileName(), fmOpenRead or fmShareExclusive); // Защита от зацикливания. Если файл открыт возникнет исключительная ситуация.
IncludeFile(NewInStream, OutStream, Nvl + 1);
NewInStream.Free;
except
end;
end;


 
Оливейра ©   (2002-10-19 15:26) [2]

В свое время у меня примерно такая же задача была - поделка для построения многоязычного сайта, UTF-8 в конечном HTML не допускался, некоторые части шаблона документа были языкозависимыми, некоторые - нет.
Схему документа хранил в XML.
<?xml version="1.0" encoding="utf-8"?>
<part type="independent" filename="head.inc"/>
<part type="dependent">
<subpart lang="en" filename="titleeng.inc"/>
<subpart lang="fr" filename="titlefr.inc"/>
</part>
...

И окончательный HTML генерил парсингом.





 
NA ©   (2002-10-20 11:17) [3]

Спасибо! Я обрел ума, оба варианта интересны.

2Оливейра ©: какой циничный и одновременно простой способ 0:-)



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
3-101131
Veles
2002-10-10 13:02
2002.10.31
Что лишнее в BDE


1-101248
Дядя Джонсон
2002-10-17 23:00
2002.10.31
Как перейти в самый верх memo?


4-101570
ai
2002-09-17 12:36
2002.10.31
TbitMap.SaveToFile - не могу открыть в Photoshop


3-101088
Heathen
2002-10-08 17:14
2002.10.31
SQL в ADO


1-101267
Yasha
2002-10-22 13:25
2002.10.31
CD-ROM