Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Еще один вопрос про DLL   Найти похожие ветки 

 
Новичоккк   (2006-04-01 18:04) [0]

Возможно ли как-нибудь из DLL узнать имя файла этой самой библиотеки?

P.S. paramstr(0) возвращает имя файла программы, загрузившей DLL"ку :(


 
Новичоккк   (2006-04-01 19:16) [1]

UP


 
Knight ©   (2006-04-01 19:21) [2]

Спросить у программы, загрузившей DLL"ку...


 
Piter ©   (2006-04-01 19:35) [3]

аля:

function GetName: string;
const
 cLenBuf = 500;
var
 Buf: array[0..cLenBuf] of char;
begin
 SetLength(s, 500);
 if GetModuleFileName(hinstance, @Buf[0], cLenBuf) = 0 then
   Result := ""
 else
   Result := Buf;
end;


 
Piter ©   (2006-04-01 19:36) [4]

писал с руки, так что может ошибки есть


 
Новичоккк   (2006-04-01 20:03) [5]

2Piter
Спасибо. В итоге у меня получилось вот так:
   function GetPath: PChar;
   var
     buf: array [0..1023] of AnsiChar;
   begin
    if GetModuleFileName(hinstance, @Buf[0], length(buf)) = 0 then
      Result := ""
    else
      Result := PChar(@Buf[0]);
   end;


 
begin...end ©   (2006-04-01 21:10) [6]

> Новичоккк   (01.04.06 20:03) [5]

Плохо получилось.

> var
>   buf: array [0..1023] of AnsiChar;
> ...
> Result := PChar(@Buf[0]);

В последней строке в результат записывается адрес локальной переменной Buf, которая после выхода из функции перестаёт существовать.

И поэтому вполне возможно, что через некоторое время после выхода из функции никакой строки по этому адресу уже не будет.

P.S. И 1023 — это многовато. MAX_PATH будет вполне достаточно.


 
Piter ©   (2006-04-01 22:52) [7]

Новичоккк   (01.04.06 20:03) [5]

а чем тебя мой вариант не строил? Нафига в Delphi использовать PChar, когда там есть такой замечательный тип как String... Не вижу никакого смысла в PChar внутри Delphi использовать, глупости.


 
07BB   (2006-04-03 07:59) [8]

Piter ©   (01.04.06 22:52) [7]
Для использовании API функций


 
Piter ©   (2006-04-03 20:45) [9]

07BB   (03.04.06 7:59) [8]

и с каких пор для API функций нельзя использовать string?



Страницы: 1 вся ветка

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.092 c
15-1144134954
Kolan
2006-04-04 11:15
2006.04.23
Ктонибудь знает как подсчитать интеграл в Maple?


2-1144362853
Freeon
2006-04-07 02:34
2006.04.23
КРИПТОАНАЛИЗ


15-1143699826
dera
2006-03-30 10:23
2006.04.23
Как поверх ХР поставить 98?


4-1139211321
Dush
2006-02-06 10:35
2006.04.23
TAPI


2-1144733806
Сергей И.
2006-04-11 09:36
2006.04.23
Работа с принтером