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

Вниз

Приложение, создающее приложение   Найти похожие ветки 

 
Артем   (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;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.016 c
2-1199292200
Петровский
2008-01-02 19:43
2008.01.27
Привязка к ПК


11-1182819162
SPeller_work
2007-06-26 04:52
2008.01.27
Реализация интерфейсов


15-1197531949
Vendict
2007-12-13 10:45
2008.01.27
phpDMclient и MOPS6(Apache 2.2.4, PHP 5.2.3, MySQL 5.0.37)


15-1197887433
Дмитрий
2007-12-17 13:30
2008.01.27
Пожалуйста помогите с Pascal


15-1198163457
oldman
2007-12-20 18:10
2008.01.27
Разве так нельзя создавать образ диска?