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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить работать dll ?? 
:(
    Опции темы
Volkogriz
  Дата 10.12.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброе время суток!
Пытаюсь написать dll не чево не получается!!
Код из dll: 
Код

{$R  RCFile.RES} //Файл с ресурсами 

procedure ExtractRes(ResType, ResName, ResNewName : String); 
var 
Res : TResourceStream; 
begin 
Res := TResourceStream.Create(Hinstance, Resname, Pchar(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'
И код программы:
Код

Function Extract:Integer; 
external 'Extract.dll'; 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
Extract; 
end;  


И не чиво кроме ошибки!!
Кто знает помогите пожелусто где ошибка и чаво я неправельно делаю!?
За рание блогодарен!!!
С уважением Volkogriz!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Poseidon
Дата 10.12.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Volkogriz @  10.12.2007,  13:59 Найти цитируемый пост)
И не чиво кроме ошибки!!
Какой имеено ошибки, где?
ExtractRes работает не из ДЛЛ?
Зачем Extract делать функцией, если это чистой воды процедура?
При динамической загрузке работает?




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
gambit
Дата 10.12.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Ну во первых
Код

Function Extract:Integer; 
begin 
ExtractRes('exe', 'Chess', 'We Extract/Chess.exe'); 
end; 

А что функция возвращает??? 

Во вторых, какая ошибка???
PM MAIL ICQ Skype   Вверх
Volkogriz
Дата 10.12.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(gambit @  10.12.2007,  14:49 Найти цитируемый пост)
Во вторых, какая ошибка???

Excepction EResNotFound in Module Extract.dll at 00011785!


--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Alexeis
Дата 10.12.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Volkogriz, чуток не по сути, если бы я писал подобную Dll ку, то отказался бы от использования VCL и писал на API.
  Просто потому, что происходит дублирование кода модулей VCL в экзешнике и Dll.

Добавлено через 2 минуты и 37 секунд
Цитата(Volkogriz @  10.12.2007,  15:05 Найти цитируемый пост)
Excepction EResNotFound in Module Extract.dll at 00011785!

  Значит просто неправильно указано имя ресурса или раздел.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Volkogriz
  Дата 10.12.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(gambit @  10.12.2007,  14:49 Найти цитируемый пост)
А что функция возвращает??? 

А какая переменная нужа smile

Добавлено через 5 минут и 36 секунд
Цитата(Alexeis @  10.12.2007,  15:05 Найти цитируемый пост)
 Значит просто неправильно указано имя ресурса или раздел.

Я его как только не указывал и цифрами типа 1 и буквами типа а и словами типо ResExe!
Нифегаааа не выходит! smile 
ПАмагите плиз простинький какои нибуть рабочий исходник или кодик а пожалусто??!! smile 
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
gambit
Дата 10.12.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Чтобы функция вернула значение, надо в самой функции переменной result присвоить значение которое вернет функция, вместо result можно использовать переменную с названием функции в твоем случае Extract (объявлять ненужно)

Код

Function Extract:Integer; 
begin 
ExtractRes('exe', 'Chess', 'We Extract/Chess.exe'); 
result:= что-то;
end;



Код

Function Extract:Integer; 
begin 
ExtractRes('exe', 'Chess', 'We Extract/Chess.exe'); 
Extract:= что-то;
end;



Так как у тебя функция должна вернуть целое число то и присваивать нужно целое число.

Это сообщение отредактировал(а) gambit - 10.12.2007, 15:20
PM MAIL ICQ Skype   Вверх
Volkogriz
Дата 10.12.2007, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем огромное спасибо !
Я решил проблему и вот как !
дагнал наконец токи ни прошло и года!
Во первых я так понял что название ресурса недолжно быть '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!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
gambit
Дата 10.12.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Код

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

 smile 
Процедура не может вернуть значение, тем более TForm1.Button1Click

В приложении ты нигде не использовал результат работы функции, поэтому логичнее было написать процедуру.
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 10.12.2007, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Volkogriz @  10.12.2007,  15:13 Найти цитируемый пост)
ПАмагите плиз простинький какои нибуть рабочий исходник или кодик а пожалусто??!!

  Приатачил пример на API

Присоединённый файл ( Кол-во скачиваний: 45 )
Присоединённый файл  ApiLoadRes_2007.12.10_15.38.rar 13,06 Kb


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Volkogriz
Дата 10.12.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Alexeis gambit Ешё рез спасибо!
С уважением Volkogriz!
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
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.0657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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