Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2011, 15:44   #1
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию Извлечение файла до момента создания формы

Добрый день .
Возникла маленькая проблема, не пойму как решить.
Пробую, до момента создания формы, из ресурса извлечь файл.
Извлечь файл нужно обязательно до создание формы

Почему ни чего не происходит .

Делаю так :

Код:

{$R dll.RES}



//=================  Редактор ресурсов 

procedure ExtractRes(ResType, ResName, ResNewName : String);
var Res : TResourceStream;
begin
  Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
  Res.SavetoFile(ResNewName);
  FreeAndNil(Res);
  FreeMemory(Res);
end;

begin

     CreateDir('C:\ProgramData\dll');
     ExtractRes('RES', 'ba', 'C:\ProgramData\dll\my.dll');
     Sleep(1000);

     Application.Initialize;
     Application.MainFormOnTaskbar := True;
     Application.CreateForm(TForm1, Form1);
     Application.Run;

end;

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 07.07.2011, 15:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

показывайте res файл ваш.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.07.2011, 16:25   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

в файле my.rc пишу ba RES "my.dll" дальше c помощью brcc32.exe cоздаю dll.RES.
Проблема в том , что и папка не создается (CreateDir('C:\ProgramData\dll')

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 07.07.2011, 16:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

семерка?
доступ то есть?(права админа)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.07.2011, 16:47   #5
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Да windows 7, права есть .
Проблема , я понял, в том, что, при загрузке формы должна быть уже создан
и быть в наличии файл my.dll.
Здесь моя ошибка в неправильном подключении DLL, вернее не неправильном, а
скорее преждевременном .
И, вот получается визуально форма не создана, но уже подключена, а т.к.
нет DLL, она не запускается, т.к. создается исключительная ситуация.
Вроде так, если конечно я правильно понимаю процесс создания формы.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 07.07.2011, 16:58   #6
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Давно не кодил в Delphi, а нельзя ли поставить какое-нибудь условие, на вот это дело?
Цитата:
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 07.07.2011, 21:29   #7
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Немного разобрался DLL-и, никогда с ними не работал.
Решил к проекту подключать Dll динамически , но опять
возникли проблемы, вроде все делаю, как в "учебнике",
а работать всё равно не желает.

Посмотрите мой (переделанный bass.pas) маленький модуль, где ошибка.
Вложения
Тип файла: rar mybass.rar (9.1 Кб, 9 просмотров)

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 08.07.2011, 03:28   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Ничего себе маленький! 36 кб!
в mybas.pas проблем не должно быть вовсе.


У вас много проблем:
1. Неправильно храните dll в ресурсах. Нужен тип EXEFILE а не RCDATA. При RCDATA, EXE и DLL хранятся по другому, а после распаковки винды их уже не распознают.
2. Вообще не правильно грузите DLL из ресурсов! Ну ктож так с ресурсами-то, возится?

Вот штампанул вам пример, как правильно это делать.

Саму dll зыркаем в TestDLL.dpr
Динам. вызов из dll в MainFormUnit.pas
Выгрузка из ресурсов палится в dpr.

А для начала, можно запустить Loader.exe, и посмотреть как это работает

p.s. с вас +

xwicked, Можно, например в dpr открывем дескриптор dll, а в Destroy формы, зыкрываем. И можно проверять, если дескриптор получен, значит продолжаем грузить программу. Иначе клоуз...
Тут в общем-то только фантазия програмиста=).

Но и тут при внезапном исключении, может возникнуть утечка памяти т.к. в момент исключения, dll не будет выгружена из памяти т.к. нужный нам destroy не будет вызван.

_ADDED_
ах да, в примере тоже есть фэил(ввиде утечки памяти)... забыл в динам. вызове, в конце(при успешно открытом дескрипторе hLib, вызвать FreeLibrary).

----
Все я спать. 3 часа ночи. Мозг спит, а тело ещё нет.
Вложения
Тип файла: zip DLLInRES.zip (166.7 Кб, 15 просмотров)

Последний раз редактировалось Человек_Борща; 08.07.2011 в 03:43. Причина: Epic fail...
Человек_Борща вне форума Ответить с цитированием
Старый 08.07.2011, 18:38   #9
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Большое спасибо Человек_Борща !

Да, век живи, век учись. Интересный способ (обошел я эту информацию в свое время).
Беру на вооружение. С меня + и

Чего то не могу Вам добавить +, система пишит :

Цитата:
Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его Человек_Борща.
Я, так и сделал, но безрезультатно . Короче будет за мной.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.

Последний раз редактировалось Stilet; 08.07.2011 в 20:18.
volod3000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бейсик. Вычисление момента инерции,момента сопротивления площади поперечного сечения для кольца kostia-92 Помощь студентам 0 26.06.2011 09:58
Delphi Извлечение данных из файла txt ledenec Помощь студентам 2 07.04.2010 18:19
извлечение из своего тела exe файла Titan123 Общие вопросы Delphi 4 22.10.2008 19:17
Извлечение RGB пикселей из bmp-файла St0ne-c0ld Фриланс 7 16.10.2008 18:27
Извлечение файлов проекта из .exe файла shtuceron Общие вопросы Delphi 3 25.05.2008 18:01