Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DOS - приложения [D7, WinXP]


Johny ©   (2006-12-26 10:46:00) 

Подскажите как добавить в проект скампилированное DOS приложение?


Elen   (2006-12-27 08:57:00) [1]


> А здесь по подробней если можно, я не совсем в курсе.

Протектор - нечто среднее между инсталятором и пакером. Содержит внутри себя программу(ы) и выполняет их из своей базы, загружая прямо в память. Если тебе это надо то в Инете их навалом. Да и в гугле можно литературу посмотреть для особо-рукодельничающих.


Johny   (2006-12-27 08:48:00) [2]

Просто у меня есть готовый DOS файлик который я хочу поместить в свою прогу! Только и вего. Можно поместить его инсталлсшелд и он будет капироватся при установке в папку с программой как утелита, но это слишком просто. Если писать rc. то нужно что бы он присутсвовал на компе, но на чужом компе его не будет и значит нет смысла морочится. Можно переписать его исходник во внутрь программы, и это уже не будет отдельный файл.

> Слушай, да ты не как протектор пишеш? Чего б не взять уже
> готовые?


А здесь по подробней если можно, я не совсем в курсе.


Elen   (2006-12-27 07:41:00) [3]


> Johny

Слушай, да ты не как протектор пишеш? Чего б не взять уже готовые?


Ученик чародея   (2006-12-27 02:05:00) [4]


> Johny ©   (26.12.06 22:20) [12]
>
> Да здесь я уже разобрался, всё работает.
> А получилось вот что:
>
> RC.файл > имя EXEFILE D:\нужная прога\её имя.exe
>
> компилирую brcc32.exe;
> получается имя.res;
> потом код в проге >
>
> {$R имя.res}
>
> procedure ExtractRes(exefile, стар.имя, нов.имя : String);
>
> var
>  Res : TResourceStream;
> begin
>  Res := TResourceStream.Create(Hinstance, стар.имя, Pchar(exefile));
>
>  Res.SavetoFile(нов.имя);
>  Res.Free;
> end;
> потом вызов > ExtractRes('exefile', 'стар.имя', 'нов.exe');
>
>
> Но оно только капирует ехе-файл в директорию с прогой и
> переименновывает её. А мне надо что бы этот ехе-файл при
> кампиляции оставался внутри моей проги.


Только тебе всего лишь системный загрузчик свой написать нужно. Для на год-полтора работы. Оно тебе надо? Хотя при успешном выполнении знаний прибавится.


ors_archangel   (2006-12-27 01:23:00) [5]


> Но оно только капирует ехе-файл в директорию с прогой и
> переименновывает её. А мне надо что бы этот ехе-файл при
> кампиляции оставался внутри моей проги.

Разве этого не происходит вследствие {$R имя.res}? Этой директивой скомпилированный rc (то бишь res) линкуется к исполняемому файлу, т.о. и DOS-программа намертво линкуется к программе при кампиляции… Или нет?


Virgo_Style   (2006-12-26 22:35:00) [6]

Johny ©   (26.12.06 22:20) [12]
что такое кампиляция


Johny   (2006-12-26 22:20:00) [7]

Да здесь я уже разобрался, всё работает.
А получилось вот что:

RC.файл > имя EXEFILE D:\нужная прога\её имя.exe

компилирую brcc32.exe;
получается имя.res;
потом код в проге >

{$R имя.res}

procedure ExtractRes(exefile, стар.имя, нов.имя : String);
var
 Res : TResourceStream;
begin
 Res := TResourceStream.Create(Hinstance, стар.имя, Pchar(exefile));
 Res.SavetoFile(нов.имя);
 Res.Free;
end;
потом вызов > ExtractRes('exefile', 'стар.имя', 'нов.exe');

Но оно только капирует ехе-файл в директорию с прогой и переименновывает её. А мне надо что бы этот ехе-файл при кампиляции оставался внутри моей проги.
.


Palladin   (2006-12-26 21:15:00) [8]

интересно, а как ты пробовал...


Johny   (2006-12-26 21:01:00) [9]


> ... Если [7] у тебя не покатит, просто положи ДОС-прогу
> рядом с экзешником твоей проги и запускай его WinExec(<Тот_самый_ДОС_проект>,
> 0)

Именно так я и сделал! Но это меня не устраивает. Меня больше интересует вариант с RC. Но пока не получается написать функцию вызова.


Elen   (2006-12-26 12:01:00) [10]


> Johny ©   (26.12.06 11:45) [5]
>
> Да!

... Если [7] у тебя не покатит, просто положи ДОС-прогу рядом с экзешником твоей проги и запускай его WinExec(<Тот_самый_ДОС_проект>,0)


alex_***   (2006-12-26 11:59:00) [11]


> оздаешь текстовый файл DOSAPP.RC со след.содержимым:
>
> MyDosApp RT_RCDATA MyDosApp.exe
>
> и это rc-файл к проекту (см. [1])
>

след. вопрос будет как это теперь запустить :)


Сергей М.   (2006-12-26 11:52:00) [12]

Создаешь текстовыйфайл DOSAPP.RC со след.содержимым:

MyDosApp RT_RCDATA MyDosApp.exe

и это rc-файл к проекту (см. [1])


alex_***   (2006-12-26 11:51:00) [13]

чтоб запустить добавлять ничего не надо


Johny   (2006-12-26 11:45:00) [14]

Да!


Elen   (2006-12-26 11:33:00) [15]


> Подскажите как добавить в проект скампилированное DOS приложение?

Для того чтоб потом ее запустить из твоей проги?


Сергей М.   (2006-12-26 11:20:00) [16]

А что вообщедолжно было "получиться" по-твоему ?


Johny   (2006-12-26 10:54:00) [17]

не получается, пишет "One or more lines were too long and have been truncated"


Сергей М.   (2006-12-26 10:49:00) [18]

Project->Add to project..->скампилированное DOS приложение


Наверх

Титульная страница Поиск, карта сайта Написать письмо