![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приложение, создающее приложение [D6, D7, XP]
Артем © (2007-12-27 23:33:00)Мастера!
Опишите, пожалуйста, хотя бы вкратце схему реализации следующей задачи. Создать программу, которая бы создавала другую программу с учетом данных, введенных пользователем.
Например, в этом приложении пользователем вводится какой-нибудь текст, далее "создать" и на выходе новый exe-файл с одним элементом memo, в котором вставлен данный текст.
Опишите вкратце как это организовать, пожалуйста.
Заранее огромное спасибо за советы.
Артем (2007-12-28 23:56:00) [21]
> Зачем?
удобно для пользователя
Артем (2007-12-28 23:55:00) [22]Как мне сохранить данные пользователя(html, графику,видео,аудио и т.д.) в копии своего приложения и потом их считать?
palva (2007-12-28 23:47:00) [23]> Есть мысли у кого?
Мыслей-то много. Только вопрос задайте. На то что вы спрашивали вам уже ответили во многих вариантах.
sdts (2007-12-28 23:34:00) [24]
> И чтобы все это обязательно хранилось в одном EXE-файле.
Зачем?
Артем (2007-12-28 23:21:00) [25]Нет, все-таки это не совсем то, что мне нужно. У меня данные разные надо хранить - и видео, и аудио, и html чтоб компилировался (это я сам), и JPEG и т.д. И чтобы все это дело устанавливалось пользователем, после чего зашивалось в приложение. Поэтому мне надо будет скопировать самого себя в указанное пользователем место и зацепить в ту копию все заданные им данные (далеко не только текст). Т.е. чтобы в копии отражались уже данные пользователя. Например, по нажатию на определенную кнопку (ранее созданную) воспроизводилось видео пользователя. Или, например, в WebBrowser-е при запуске скопированной программы отображался текст пользователя, который он ранее ввел. И чтобы все это обязательно хранилось в одном EXE-файле.
Я более менее ясно изъяснился?
Есть мысли у кого?
palva (2007-12-28 23:03:00) [26]> А можно ли в таком случае скопировать самого себя и дописать в копию необходимые данные?
Вопрос не очень понятен. Во всяком случае программа всегда может прочитать себя и скопировать в другой файл.
> Как это реализовывается?
Если просто копирование себя, то например, так.
{$APPTYPE CONSOLE}
var
fi, fo: File;
buf: array[1..4000] of char;
n: Integer;
begin
AssignFile(fi, 'myprog.exe');
AssignFile(fo, 'myprog1.exe');
Rewrite(fo, 1);
FileMode := 0;
Reset(fi, 1);
repeat
BlockRead(fi, buf, 4000, n);
BlockWrite(fo, buf, n);
until n<>4000;
CloseFile(fi);
CloseFile(fo);
end.
Если нужно читать то, что дописано, тогда встаньте на нужное место после открытия входного файла и читайте.
Артем (2007-12-28 22:46:00) [27]
> Конечно есть. Держать ваши данные в отдельном файле и читать
> его из программы. Это самое простое решение. А можно дописать
> файл с данными к программе и пусть программа читает сама
> себя. Сменились данные? Тогда берем первоначальный exe-файл
> и дописываем к нему другие данные. Компилятор для этого
> не нужен.
Слушайте, ну это кстати вариант. Спасибо. А можно ли в таком случае скопировать самого себя и дописать в копию необходимые данные? Как это реализовывается?
palva (2007-12-28 22:31:00) [28]> Читал, только этого очень мало, а скорее слишком сложно.
Задавайте конкретные вопросы дополним и объясним, что непонятно.
> Ну есть же более простое решение?
Конечно есть. Держать ваши данные в отдельном файле и читать его из программы. Это самое простое решение. А можно дописать файл с данными к программе и пусть программа читает сама себя. Сменились данные? Тогда берем первоначальный exe-файл и дописываем к нему другие данные. Компилятор для этого не нужен.
Артем (2007-12-28 21:54:00) [29]Читал, только этого очень мало, а скорее слишком сложно. Ну есть же более простое решение?
Да и файл проекта не лежит уже на сервере, не посмотришь примеры...
Amoeba (2007-12-28 21:48:00) [30]
> Артем (28.12.07 19:26) [10]
>
> Нет, мне нужно именно новое приложение.
>
> dcc32 - его можно зашивать в основную программу и потом
> с помощью него компилировать новые приложения? а где скачать
> можно и существует ли какой-либо мануал краткий хотя бы?
>
1. Ну "зашьешь", и что дальше? Все равно ведь запускать придется с диска. Да и несколько *.dcu все равно придется тащить с собой.
2. Загляни в папку \Delphi\Bin и обрящешь. Потом выполни dcc32.exe > dcc32.txt и чудесным образом у тебя появится "мануал".
И еще рекомендую прочесть эту статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=454
Артем (2007-12-28 19:26:00) [31]Нет, мне нужно именно новое приложение.
dcc32 - его можно зашивать в основную программу и потом с помощью него компилировать новые приложения? а где скачать можно и существует ли какой-либо мануал краткий хотя бы?
Alkid (2007-12-28 18:07:00) [32]Без дельфи можно, если только установишь dcc32 на комп :) Это компилятор от дельфи, без IDE.
Вообще я бы поступил иначе - я бы сделал так, что бы программа читала эту страницу у себя с конца и потом просто делал копию готового exe-шника и дописывал ему данные в конец. Нормальная пересборка программы тут - явная пальба из пушки по воробьям.
Артем (2007-12-28 17:39:00) [33]Может есть готовые?
На сколько сложен этот процесс и где об этом можно почитать?
Рамиль (2007-12-28 17:02:00) [34]
> можно ли БЕЗ Delphi компилировать приложение?
Да запросто.
> Если да, то как?
Написать и откомпилировать компилятор.
Артем (2007-12-28 16:11:00) [35]Приложения "на выходе" все будут однотипными, меняется только содержимое. В моем случае меняется содержимое html-страницы. Мне одно не понятно - можно ли БЕЗ Delphi компилировать приложение? Если да, то как?
Знаю, что можно компилировать RC-файлы с помощью brcc32, это понятно. Но как скомпилированный файл ресурса всунуть в приложение без Delphi. Это я не знаю. Подскажите плиз.
Alkid (2007-12-28 11:59:00) [36]1. LISP и прочие языки с нормальным метапрограммированием - 4ever
2. Схема генератор исходников -> компилятоор -> результат
3. Скриптование вместо порождения новой программы.
Короче, автор, изложи предметную проблему. Сдаётся там тебе нужно не совсем это.
www (2007-12-28 10:21:00) [37]
> лежащему рядом компилятору.
с другого языка :))
Skyle (2007-12-28 06:46:00) [38]Пишешь программу, которая генерирует исходник на каком-нибудь языке. А потом по кнопке "Родить" этот исходник подсовывается лежащему рядом компилятору.
Германн (2007-12-28 01:27:00) [39]
> Опишите, пожалуйста, хотя бы вкратце схему реализации следующей
> задачи. Создать программу, которая бы создавала другую программу
> с учетом данных, введенных пользователем.
> Например, в этом приложении пользователем вводится какой-
> нибудь текст, далее "создать" и на выходе новый exe-файл
> с одним элементом memo, в котором вставлен данный текст.
>
>
Это не задача. Это бредовое переложение на русский какой-то другой задачи. А сей бред решается без создания "другой программы" двумя функциями: SaveToFile & LoadFromFile.
{RASkov} (2007-12-28 01:03:00) [40]> Опишите вкратце как это организовать,
вкратце:
-это сложно....
Как вариант, если приложения будут однотипные, можно сделать шаблонное приложение и затем его копировать и копии подсовывать новые ресурсы....
Например с мемо. Создать новый проект (форма и на ней Мемо) и на создании формы грузить в мемо, из заранее определенного ресурса, текст...
И вот этот ресурс можно будет подсовывать новой копии... Объяснить получилось как-то криво... сорри... зато вкратце)