Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
ВнизПриложение, создающее приложение Найти похожие ветки
← →
Артем (2007-12-27 23:33) [0]Мастера!
Опишите, пожалуйста, хотя бы вкратце схему реализации следующей задачи. Создать программу, которая бы создавала другую программу с учетом данных, введенных пользователем.
Например, в этом приложении пользователем вводится какой-нибудь текст, далее "создать" и на выходе новый exe-файл с одним элементом memo, в котором вставлен данный текст.
Опишите вкратце как это организовать, пожалуйста.
Заранее огромное спасибо за советы.
← →
{RASkov} © (2007-12-28 01:03) [1]> Опишите вкратце как это организовать,
вкратце:
-это сложно....
Как вариант, если приложения будут однотипные, можно сделать шаблонное приложение и затем его копировать и копии подсовывать новые ресурсы....
Например с мемо. Создать новый проект (форма и на ней Мемо) и на создании формы грузить в мемо, из заранее определенного ресурса, текст...
И вот этот ресурс можно будет подсовывать новой копии... Объяснить получилось как-то криво... сорри... зато вкратце)
← →
Германн © (2007-12-28 01:27) [2]
> Опишите, пожалуйста, хотя бы вкратце схему реализации следующей
> задачи. Создать программу, которая бы создавала другую программу
> с учетом данных, введенных пользователем.
> Например, в этом приложении пользователем вводится какой-
> нибудь текст, далее "создать" и на выходе новый exe-файл
> с одним элементом memo, в котором вставлен данный текст.
>
>
Это не задача. Это бредовое переложение на русский какой-то другой задачи. А сей бред решается без создания "другой программы" двумя функциями: SaveToFile & LoadFromFile.
← →
Skyle © (2007-12-28 06:46) [3]Пишешь программу, которая генерирует исходник на каком-нибудь языке. А потом по кнопке "Родить" этот исходник подсовывается лежащему рядом компилятору.
← →
www (2007-12-28 10:21) [4]
> лежащему рядом компилятору.
с другого языка :))
← →
Alkid © (2007-12-28 11:59) [5]1. LISP и прочие языки с нормальным метапрограммированием - 4ever
2. Схема генератор исходников -> компилятоор -> результат
3. Скриптование вместо порождения новой программы.
Короче, автор, изложи предметную проблему. Сдаётся там тебе нужно не совсем это.
← →
Артем (2007-12-28 16:11) [6]Приложения "на выходе" все будут однотипными, меняется только содержимое. В моем случае меняется содержимое html-страницы. Мне одно не понятно - можно ли БЕЗ Delphi компилировать приложение? Если да, то как?
Знаю, что можно компилировать RC-файлы с помощью brcc32, это понятно. Но как скомпилированный файл ресурса всунуть в приложение без Delphi. Это я не знаю. Подскажите плиз.
← →
Рамиль © (2007-12-28 17:02) [7]
> можно ли БЕЗ Delphi компилировать приложение?
Да запросто.
> Если да, то как?
Написать и откомпилировать компилятор.
← →
Артем (2007-12-28 17:39) [8]Может есть готовые?
На сколько сложен этот процесс и где об этом можно почитать?
← →
Alkid © (2007-12-28 18:07) [9]Без дельфи можно, если только установишь dcc32 на комп :) Это компилятор от дельфи, без IDE.
Вообще я бы поступил иначе - я бы сделал так, что бы программа читала эту страницу у себя с конца и потом просто делал копию готового exe-шника и дописывал ему данные в конец. Нормальная пересборка программы тут - явная пальба из пушки по воробьям.
← →
Артем (2007-12-28 19:26) [10]Нет, мне нужно именно новое приложение.
dcc32 - его можно зашивать в основную программу и потом с помощью него компилировать новые приложения? а где скачать можно и существует ли какой-либо мануал краткий хотя бы?
← →
Amoeba © (2007-12-28 21:48) [11]
> Артем (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 21:54) [12]Читал, только этого очень мало, а скорее слишком сложно. Ну есть же более простое решение?
Да и файл проекта не лежит уже на сервере, не посмотришь примеры...
← →
palva © (2007-12-28 22:31) [13]> Читал, только этого очень мало, а скорее слишком сложно.
Задавайте конкретные вопросы дополним и объясним, что непонятно.
> Ну есть же более простое решение?
Конечно есть. Держать ваши данные в отдельном файле и читать его из программы. Это самое простое решение. А можно дописать файл с данными к программе и пусть программа читает сама себя. Сменились данные? Тогда берем первоначальный exe-файл и дописываем к нему другие данные. Компилятор для этого не нужен.
← →
Артем (2007-12-28 22:46) [14]
> Конечно есть. Держать ваши данные в отдельном файле и читать
> его из программы. Это самое простое решение. А можно дописать
> файл с данными к программе и пусть программа читает сама
> себя. Сменились данные? Тогда берем первоначальный exe-файл
> и дописываем к нему другие данные. Компилятор для этого
> не нужен.
Слушайте, ну это кстати вариант. Спасибо. А можно ли в таком случае скопировать самого себя и дописать в копию необходимые данные? Как это реализовывается?
← →
palva © (2007-12-28 23:03) [15]> А можно ли в таком случае скопировать самого себя и дописать в копию необходимые данные?
Вопрос не очень понятен. Во всяком случае программа всегда может прочитать себя и скопировать в другой файл.
> Как это реализовывается?
Если просто копирование себя, то например, так.{$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 23:21) [16]Нет, все-таки это не совсем то, что мне нужно. У меня данные разные надо хранить - и видео, и аудио, и html чтоб компилировался (это я сам), и JPEG и т.д. И чтобы все это дело устанавливалось пользователем, после чего зашивалось в приложение. Поэтому мне надо будет скопировать самого себя в указанное пользователем место и зацепить в ту копию все заданные им данные (далеко не только текст). Т.е. чтобы в копии отражались уже данные пользователя. Например, по нажатию на определенную кнопку (ранее созданную) воспроизводилось видео пользователя. Или, например, в WebBrowser-е при запуске скопированной программы отображался текст пользователя, который он ранее ввел. И чтобы все это обязательно хранилось в одном EXE-файле.
Я более менее ясно изъяснился?
Есть мысли у кого?
← →
sdts (2007-12-28 23:34) [17]
> И чтобы все это обязательно хранилось в одном EXE-файле.
Зачем?
← →
palva © (2007-12-28 23:47) [18]> Есть мысли у кого?
Мыслей-то много. Только вопрос задайте. На то что вы спрашивали вам уже ответили во многих вариантах.
← →
Артем (2007-12-28 23:55) [19]Как мне сохранить данные пользователя(html, графику,видео,аудио и т.д.) в копии своего приложения и потом их считать?
← →
Артем (2007-12-28 23:56) [20]
> Зачем?
удобно для пользователя
← →
palva © (2007-12-29 00:00) [21]Структурируйте эти данные в отдельном файле с указанием имен, смещений и т. д., а потом допишите получившийся файл к своему приложению.
← →
Артем (2007-12-29 00:01) [22]Этот файл какого формата должен быть?
← →
Артем (2007-12-29 00:03) [23]Я просто не понимаю как можно сохранить в одном файле и видео, и аудио, и текст, и графика...Как это сделать?
← →
palva © (2007-12-29 00:14) [24]> Этот файл какого формата должен быть?
Начало файла будет обычным exe файлом, в конце будет файл того формата, который вы придумаете.
> Я просто не понимаю как можно сохранить в одном файле и видео, и аудио, и текст, и графика...Как это сделать?
Записать последовательно все файлы в один файл. Ну к примеру, пусть у вас есть файлы a.mp3, b.avi, c.txt Пишете в командной строке:
copy /b a.mp3+b.avi+c.txt abc.bin
и у вас получится в одном файле три разнородных файла. Правда, для того чтобы ими воспользоваться, нужно знать где какой файл начинается. Ну так я привел самый простейший пример. Поместите в начале каждого куска заголовок с именем и длиной и у вас уже будет какая-то структура, по которой можно разобраться. Придумайте какую-нибудь другую структуру. Вы программист или нет?
← →
Amoeba © (2007-12-29 00:35) [25]
> Артем (29.12.07 00:03) [23]
>
> Я просто не понимаю как можно сохранить в одном файле и
> видео, и аудио, и текст, и графика...Как это сделать?
Очень просто. И ничего придумывать не надо. Microsoft уже давно все сделал за нас. В Windows API для этого есть стандартное средство: Structured Storages.
Можно почитать например здесь:
http://www.g299792458.boom.ru/articles/comstor.html
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1009
← →
Артем (2007-12-29 01:01) [26]
> Очень просто. И ничего придумывать не надо. Microsoft уже
> давно все сделал за нас. В Windows API для этого есть стандартное
> средство: Structured Storages.
> Можно почитать например здесь:
> http://www.g299792458.boom.ru/articles/comstor.html
> http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1009
Спасибо, посмотрел. Т.е. придется создавать файл хранилища, а потом его зашивать в приложение, которое его и создало. А при каждом запуске приложения вынимать его обратно на диск и считывать данные. Так получается?
← →
Германн © (2007-12-29 01:03) [27]
> Т.е. придется создавать файл хранилища, а потом его зашивать
> в приложение, которое его и создало. А при каждом запуске
> приложения вынимать его обратно на диск и считывать данные.
> Так получается?
>
А по другому никак и никогда.
← →
Артем (2007-12-29 01:05) [28]Остается непонятным одна вещь пока: как зашить созданный файл?
← →
Германн © (2007-12-29 01:20) [29]
> Артем (29.12.07 01:05) [28]
>
> Остается непонятным одна вещь пока: как зашить созданный
> файл?
>
См.
> palva © (29.12.07 00:14) [24]
← →
Артем (2007-12-29 01:24) [30]
> а потом допишите получившийся файл к своему приложению.
как?
← →
Германн © (2007-12-29 01:29) [31]
> Артем (29.12.07 01:24) [30]
>
>
> > а потом допишите получившийся файл к своему приложению.
>
>
>
> как?
>
Ты не тот ответ посмотрел.
← →
Артем (2007-12-29 01:33) [32]в 24 пункте нет ответа на вопрос как дописать созданный файл к программе во время ее исполнения
← →
Артем (2007-12-29 02:18) [33]коллеги, ну так как же зашить созданный файл в приложение во время его исполнения?
← →
Германн © (2007-12-29 02:28) [34]
> Артем (29.12.07 01:33) [32]
>
> в 24 пункте нет ответа на вопрос как дописать созданный
> файл к программе во время ее исполнения
>
А ни в каком пункте не может быть ответа на этот вопрос! Потому что сие не возможно. ОС не не разрешает такое.
← →
Артем (2007-12-29 02:33) [35]А чего ж Вы меня отсылаете на ответ №24? :)
Есть другой решение подобной задачи?
← →
Германн © (2007-12-29 02:48) [36]
> Артем (29.12.07 02:33) [35]
>
> А чего ж Вы меня отсылаете на ответ №24? :)
А в
> Артем (29.12.07 01:05) [28]
>
> Остается непонятным одна вещь пока: как зашить созданный
> файл?
>
не было указано, что нужно записать что-то в файл приложения, которое в данный момент исполняется.
← →
Германн © (2007-12-29 02:50) [37]И вообще. Зачем нужно чего-то куда-то зашивать?
Чем это можно обосновать?
← →
Артем (2007-12-29 03:25) [38]обосновать можно тем, что это удобнее для заказчика и конечного пользователя.
а что Вы предлагаете?
← →
{RASkov} © (2007-12-29 03:44) [39]> [38] Артем (29.12.07 03:25)
> обосновать можно тем, что это удобнее для заказчика и конечного
> пользователя.
А я, как конечный пользователь, хочу Виндовс в одном файле....., а "мелкие" ее(Win) все дробят и дробят..... все больше и больше файлов в ней :(
а что Вы предлагаете?
Продумать структуру приложения и разложить все по "папочкам"(директориям).
> Как мне сохранить данные пользователя(html, графику,видео,
> аудио и т.д.)
> Я просто не понимаю как можно сохранить в одном файле и
> видео, и аудио, и текст, и графика...Как это сделать?
Как вариант сохраняй "все это барахло" в отдельную папку, раз не можешь в один файл слепить....
В общем вариантов решения твоей задачи - море. Но переписывать экзешник "на ходу" - это самый последний.... самый "дурной" вариант.
← →
Артем (2007-12-29 03:48) [40]Хорошо. Спасибо за советы. Мне достаточно информации. Будем пробовать.
Еще раз спасибо всем участникам дискуссии.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.01 c