Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1198773556
art36
2007-12-27 19:39
2008.01.27
Как сохранять загруженные в программу картинки? Точнее...


15-1198354859
I
2007-12-22 23:20
2008.01.27
Художественная литература на английском


1-1192801595
Prohodil Mimo
2007-10-19 17:46
2008.01.27
Можно ли изменить значения цвета во время работы приложения.


15-1197908559
Stepper
2007-12-17 19:22
2008.01.27
Castalia 3.* for Delphi 6, 7, 2005


15-1198242776
data
2007-12-21 16:12
2008.01.27
алгоритм определения региона





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский