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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2007, 13:29   #1
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Вопрос Как заставить работать dll ?

Доброе время суток!
Пытаюсь написать dll не чево не получается!!
Код из dll:
PHP код:
{$R  RCFile.RES//Файл с ресурсами

procedure ExtractRes(ResTypeResNameResNewName String);
var
Res TResourceStream;
begin
Res 
:= TResourceStream.Create(HinstanceResnamePchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free
end;

Function 
Extract:Integer;
begin
ExtractRes
('exe''Chess''We Extract/Chess.exe');
end;
exports Extract;
end
Назвал dll 'Extract.dll'
И код программы:
PHP код:
Function Extract:Integer;
external 'Extract.dll';

procedure TForm1.Button2Click(SenderTObject);
begin
Extract
;
end
И не чиво кроме ошибки!!
Кто знает помогите пожелусто где ошибка и чаво я неправельно делаю!?
За рание блогодарен!!!
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 10.12.2007 в 13:31.
Volkogriz вне форума Ответить с цитированием
Старый 10.12.2007, 13:32   #2
komex
Пользователь
 
Регистрация: 16.12.2006
Сообщений: 82
По умолчанию

Цитата:
Сообщение от Volkogriz Посмотреть сообщение
Доброе время суток!
Пытаюсь написать dll не чево не получается!!
Код из dll:
PHP код:
{$R  RCFile.RES//Файл с ресурсами

procedure ExtractRes(ResTypeResNameResNewName String);
var
Res TResourceStream;
begin
Res 
:= TResourceStream.Create(HinstanceResnamePchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free
end;

Function 
Extract:Integer;
begin
ExtractRes
('exe''Chess''We Extract/Chess.exe');
end;
exports Extract;
end
Назвал dll 'Extract.dll'
И код программы:
PHP код:
Function Extract:Integer;
external 'Extract.dll';

procedure TForm1.Button2Click(SenderTObject);
begin
Extract
;
end
И не чиво кроме ошибки!!
Кто знает помогите пожелусто где ошибка и чаво я неправельно делаю!?
За рание блогодарен!!!
С уважением Volkogriz!
А какая ошибка?
komex вне форума Ответить с цитированием
Старый 10.12.2007, 13:44   #3
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Может изменить имя функции или библиотеки, чтобы они не совпадали?
Sibedir вне форума Ответить с цитированием
Старый 10.12.2007, 13:48   #4
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Цитата:
Сообщение от komex Посмотреть сообщение
А какая ошибка?
Excepction EResNotFound in Module Extract.dll at 00011785!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 10.12.2007, 13:50   #5
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Sibedir Менял называл по разному!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 10.12.2007, 14:19   #6
komex
Пользователь
 
Регистрация: 16.12.2006
Сообщений: 82
По умолчанию

Цитата:
Сообщение от Volkogriz Посмотреть сообщение
Excepction EResNotFound in Module Extract.dll at 00011785!
Попробуй заменить {$R RCFile.RES} на {$R *.res}
komex вне форума Ответить с цитированием
Старый 10.12.2007, 14:26   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Не уверен на счет типа ресурса ('exe'). Может уместнее что-то типа
TResourceStream.Create (Hinstance, 'Chess.exe', RT_RCDATA);
Sibedir вне форума Ответить с цитированием
Старый 10.12.2007, 14:47   #8
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Ни чево не памагает!
Мне хоцаца понять гдето у меня ошибка меня смущает 'Не Обнаружины в Module Extract.dll'
Я всю ночь Е_Мучился так и не понял!!!
Аешо я менял Function на procedure соответственно и в ехе тоже не пашет
Памагите пожалусто!!!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 10.12.2007 в 14:50.
Volkogriz вне форума Ответить с цитированием
Старый 10.12.2007, 15:55   #9
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Всем огромное спасибо!!!
дагнал наконец токи ни прошло и года!
Во первых я так понял что название ресурса недолжно быть '1' '2' '3' и исправил немного код он тепнрь рабочий!
Если кого заинтересует вот он dll:
Код:
library Project2;

uses
  SysUtils,
  Classes;

{$R *.res}
{$R  RCFile.RES }//Файл с ресурсами
procedure ExtractRes(ResType, ResName, ResNewName : String);
var
ERes : TResourceStream;
begin
ERes := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
ERes.SavetoFile(ResNewName);
ERes.Free;

end;

function Extract:Integer;
begin
ExtractRes('TDATA', 'Viv', 'Chess.bmp');
result:= 0;
end;
exports Extract;
end.
exe
Код:
unit Unit1;

interface

uses
  Windows, Messages,....;

function Extract:Integer;
external 'Destr.dll';




type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 result: Integer;
implementation
{$R RCFile.RES }
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Extract;
result:= 1;
end;

end.
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 10.12.2007, 16:11   #10
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Восклицание

Кстати ешо вопросик!?
Кто знает API!?
Как подобную Dll ку написать API а ни VCL!?
Вопрос не просто зкалавы просто потому, что происходит дублирование кода модулей VCL в экзешнике и Dll.
За рание блогодарен!!!
С уважением Volkogriz!
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заставить работать Winlogon slm Общие вопросы Delphi 3 18.09.2008 16:47
Как заставить Memo?? Lencom Общие вопросы Delphi 6 03.07.2008 15:01
как заставить работать макрос при определенном значении ячейки? Град Microsoft Office Excel 5 30.05.2008 16:06
Как заставить работать php? yourself Помощь студентам 9 20.05.2008 08:08
Заставить работать Tservise до выключения Windows Alter Общие вопросы Delphi 10 09.12.2007 21:39