день добрый, колдуны!
как на этапе сборки "вкомпилировать" содержимое текстового файла в приложение?
(что бы потом отобразить в TMemo "About")
именно "вкомпилировать" а не загрузить из файла во время работы.
конечные сборки приложений делаю баш-скриптингом, поэтому, вполне подойдет хак/финт ушей на этом уровне.
спасибо
- linux
- fpc-3.2.2
- lazarus-3.8.0
- bash
Вкомпилировать содержимое текстового файла (во время сборки проекта)
Модератор: Модераторы
- Снег Север
- долгожитель
- Сообщения: 3072
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
В делфи и винде я это делал с легкостью - засовывая любые тексты и изображения в ресурсы. В лазаре и линуксе не интересовался, но краем глаза видел, что и там есть что-то подобное. Сам разбираться не стану - есть задачи и интереснее.
- Alexx2000
- постоялец
- Сообщения: 491
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
Добавить в ресурсы в параметрах проекта, потом загрузить в TMemo можно так:
Код: Выделить всё
var
AStream: TStream;
begin
AStream:= TResourceStream.Create(HInstance, 'HIGHLIGHTERS', RT_RCDATA);
try
Memo1.Lines.LoadFromStream(AStream);
finally
AStream.Free;
end;
end;
Не совсем понятно. TMemo.Lines может хранить строки в самой форме lfm. В дизайне можно вставить текст. Если при сборке скриптами нужно что-то менять в тексте, можно вставить какие-нибудь теги, типа __Today__, и подменять башем
или седом
Хотя там есть https://www.freepascal.org/docs-html/3. ... gsu41.html и можно теги подменять на константы времени компиляции в рантайме.
Код: Выделить всё
TEXT="$(cat umain.lfm)"
TEXT="${TEXT//__Today__/$(date +'%d.%m.%Y')}"
echo "${TEXT}" > umain.lfm.tmp
mv -f umain.lfm.tmp umain.lfmКод: Выделить всё
sed -i "s|__Today__|$(date +'%d.%m.%Y')|g"Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
MemoAbout.Text:=ReplaceStr(MemoAbout.Text,'__Today__',{$I %DATE%});
end;А просто константу с текстом вставить в исходник и добавить в FormCreate Memo1.Lines.Text:=MyText; не вариант ?sunjob писал(а): 20.02.2026 04:44:11 день добрый, колдуны!
как на этапе сборки "вкомпилировать" содержимое текстового файла в приложение?
(что бы потом отобразить в TMemo "About")
именно "вкомпилировать" а не загрузить из файла во время работы.
Код: Выделить всё
Const
MyText:String=
'1------------'+#13+#10+
'2------------'+#13+#10+
'3------------';
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Text:=MyText;
end;
