Форум: "Прочее";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизЕще один вопрос про 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c