Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.12.2007, 14:29   #1
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Адрес: Азов Ростовская обл.
Сообщений: 372
Репутация: 33
Вопрос Как заставить работать 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 в 14:31.
Volkogriz вне форума   Ответить с цитированием
Старый 10.12.2007, 14:32   #2
komex
Форумчанин
 
Регистрация: 16.12.2006
Адрес: Санкт-Петербург
Сообщений: 82
Репутация: 30
По умолчанию

Цитата:
Сообщение от 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, 14:44   #3
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,260
Репутация: 931
По умолчанию

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

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

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

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

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

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

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

Всем огромное спасибо!!!
дагнал наконец токи ни прошло и года!
Во первых я так понял что название ресурса недолжно быть '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, 17:11   #10
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Адрес: Азов Ростовская обл.
Сообщений: 372
Репутация: 33
Восклицание

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

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заставить работать 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 22:39


20:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.