Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контейнер с файлами 
:(
    Опции темы
Grol
Дата 28.9.2005, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 5.5.2005
Где: Россия

Репутация: нет
Всего: нет



Уважаемые мастера такой вопрос: как в программу еще до компиляции поместить содержимое какого-нибудь файла, чтоб после компиляции программы я смог это содержимое записать снова в файл. Файл может быть любого типа. Запись в файл должна происходить без искажения содержимого. Наприер если бы я смог вставить содержимое какого-нибудь Exe файла в программу, а потом скомпилировать прогу, и сохранить полученное содержимое снова в ЕхЕ, то экзэшник запустился. Мне надо типа что-то, например, свойства Image - Picture, когда картинку в Image вставляешь из файла, то картинка в файле dfm представляется ввиде символов. Помогите пожалуйста, как все таки мне можно сделать своеобразный котейнер для файлов.
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно.........
PM MAIL ICQ   Вверх
~FoX~
Дата 28.9.2005, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Grol
Используй ресурсы


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Grol
Дата 28.9.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 5.5.2005
Где: Россия

Репутация: нет
Всего: нет



Спасибо все получилось!
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно.........
PM MAIL ICQ   Вверх
VoAnt
Дата 31.10.2005, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: нет
Всего: 2



А можно для новичка?
ЧТо значит "Исспользуй ресурсы"?
PM MAIL ICQ   Вверх
Zero
Дата 31.10.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(VoAnt @ 31.10.2005, 01:54)
ЧТо значит "Исспользуй ресурсы"?

Скорее всего автор сам по себе догодался как это сделать, а ресурсы тут не причём...

Цитата(VoAnt @ 31.10.2005, 11:49)
как запустить exe из exe.

Используй функцию ShellExecute, находится в стадартном модуле ShellApi.
Добавлено @ 11:05
Код

uses ShellAPI,...
...
ShellExecute(h, 'open', <Путь к exe-файлу>, nil, nil, SW_SHOWNORMAL);
...


Это сообщение отредактировал(а) Zero - 31.10.2005, 11:01
PM MAIL ICQ   Вверх
VoAnt
Дата 31.10.2005, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: нет
Всего: 2



Вопрос состоит в следующем:

Есть програмка, в ней каким-то образомвложен exe файл ну например:

var f : FILE;

begin

f := {287619BA334AA7B8A5C}

и т.д.

end;

Вопрос №1. Какой указывать тип и как вложить код другово ехе в программу?
Вопрос №2. Как этот файл f запустить так, чтобы не создавать f.ехе на диске???

Это сообщение отредактировал(а) VoAnt - 31.10.2005, 11:06
PM MAIL ICQ   Вверх
Zero
Дата 31.10.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(VoAnt @ 31.10.2005, 12:05)
Какой указывать тип и как вложить код другово ехе в программу?

Нетипизированый файл.
Цитата(VoAnt @ 31.10.2005, 12:05)
Как этот файл f запустить???

Перед этим нужно его вытащить оттуда, а потом создать временный файл на жёстком диске, запустить вот так:
Код

uses ShellAPI,...    
...    
ShellExecute(h, 'open', <Путь к exe-файлу>, nil, nil, SW_SHOWNORMAL);    
...

А потом программно удалить..
PM MAIL ICQ   Вверх
VoAnt
Дата 31.10.2005, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: нет
Всего: 2



Так, все оказалось проще паренной репы

Я исспользовал OLE контейнер..

Ole контейнер на форму, и дабл кликом выбираем какой файл добавить.. Все из контейнера запустить exe ещё проще.


Все решено.
PM MAIL ICQ   Вверх
VoAnt
Дата 31.10.2005, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.4.2004
Где: Украина г. Киев

Репутация: нет
Всего: 2



Код


Так теперь поясню что значит "через ресурсы" на примере JPEG файла

1)Создайте текстовый файл с расширением ".rc".Имя этого файла должно отличаться
от имени файла - пректа или любого модуля проекта.
Файл должен содержать строку вроде: MYJPEG JPEG C: \DownLoad\MY.JPG
где:
"MYJPEG" имя ресурса
"JPEG" пользовательский тип ресурса
"C: \DownLoad\MY.JPG" руть к JPEG файлу.

Пусть например rc - файл называется "foo.rc"

Запустите BRCC32.exe(Borland Resource CommandLine Compiler) - программа находится
в каталоге Bin Delphi / C + +Builder'а - передав ей в качестве параметра полный путь
к rc - файлу.
В нашем примере:

C: \DelphiPath\BIN\BRCC32.EXE C: \ProjectPath\FOO.RC
Вы получите откомпилированный ресурс - файл с расширением ".res".
(в нашем случает foo.res).
Далее добавте ресурс к своему приложению.

Код

{Грузим ресурс} 
{$R FOO.RES} 

uses Jpeg; 

procedure LoadJPEGFromRes(TheJPEG: string; ThePicture: TPicture); 
var 
  ResHandle: THandle; 
  MemHandle: THandle; 
  MemStream: TMemoryStream; 
  ResPtr: PByte; 
  ResSize: Longint; 
  JPEGImage: TJPEGImage; 
begin 
  ResHandle := FindResource(hInstance, PChar(TheJPEG), 'JPEG'); 
  MemHandle := LoadResource(hInstance, ResHandle); 
  ResPtr := LockResource(MemHandle); 
  MemStream := TMemoryStream.Create; 
  JPEGImage := TJPEGImage.Create; 
  ResSize := SizeOfResource(hInstance, ResHandle); 
  MemStream.SetSize(ResSize); 
  MemStream.Write(ResPtr^, ResSize); 
  FreeResource(MemHandle); 
  MemStream.Seek(0, 0); 
  JPEGImage.LoadFromStream(MemStream); 
  ThePicture.Assign(JPEGImage); 
  JPEGImage.Free; 
  MemStream.Free; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  LoadJPEGFromRes('MYJPEG', Image1.Picture); 
end;


Это сообщение отредактировал(а) Girder - 31.10.2005, 17:22
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.