Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

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

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

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

Делаю так :

Код:
{$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;
Ответить с цитированием
  #2  
Старый 07.07.2011, 16:11
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

скорее всего папка не создается.
попробуй CreateDirForce (вроде так зовется ф-я).
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 07.07.2011, 16:27
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
скорее всего папка не создается.
попробуй CreateDirForce (вроде так зовется ф-я).

А , что это за функция CreateDirForce

Вы неверное имели ввиду ForceDirectories

Последний раз редактировалось volod3000, 07.07.2011 в 16:48.
Ответить с цитированием
  #4  
Старый 07.07.2011, 22:04
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Но ведь CreateDir функция, вот и проверь возвращаемое значение.
Ответить с цитированием
  #5  
Старый 08.07.2011, 01:28
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Решил немного переписать bass.pas (т.е. тот файл который я подключаю для загрузки DLL ) под себя, т.е. сделать
динамическую загрузку и оставить только необходимые (для моего проекта) функции.
После подключаю его (mybass.pas) к основной форме, но ....

Посмотрите, что не так, почему не работает, где ошибка (хотя компилятор молчит, Dll создается)


Воспроизвожу так:

Код:
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      if bass_Init(-1, 44100,0, handle,nil) = false then
         Label1.Caption := 'Не могу инициализировать поток ';
         stream:=Bass_streamCreateFile(false, Pchar(ExtractFilePath(Application.ExeName)+'zas1.mp3'),0,0,BASS_UNICODE);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        Bass_ChannelPlay(stream, false);
    end;

Но звука нет, честно не пойму, где собака зарыта .
Вложения
Тип файла: rar mybass.rar (9.1 Кбайт, 4 просмотров)
Ответить с цитированием
  #6  
Старый 08.07.2011, 01:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А какой смысл переделывать? В папке DYNAMIC уже есть готовый файл.
Ответить с цитированием
  #7  
Старый 08.07.2011, 02:02
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Смысл в динамической загрузке.
При динам. загрузке можно без труда из ресурса скопировать
bass.DLL и после по надобности подключить к исполняемому файлу.

При стат. загрузке bass.DLL при загрузке исполняемого файла, уже
должен присутствовать в системе.

Одним словом мобильность.
Ответить с цитированием
  #8  
Старый 08.07.2011, 02:11
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Сори, не зразу понял о чем речь.

Подскажите как правильно им пользоваться ?
Ответить с цитированием
  #9  
Старый 08.07.2011, 02:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Код:
if Load_BASSDLL(path) then
  bla-bla-bla

Последний раз редактировалось angvelem, 08.07.2011 в 02:17.
Ответить с цитированием
  #10  
Старый 08.07.2011, 02:15
Аватар для volod3000
volod3000 volod3000 вне форума
Новичок
 
Регистрация: 25.12.2008
Сообщения: 71
Репутация: 114
По умолчанию

Понял, заработало , Ура

Большое спасибо angvelem !
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter