穿
穿红衣服的小黄
Unregistered / Unconfirmed
GUEST, unregistred user!
写了一个 dll 用来返回自身路径 dllname为 dynadll.dll 代码如下
function GETDPATH : Pchar ; stdcall
var
path:STRING;
n,j:integer;
begin
{
path:= GetModuleName(HInstance);
j:=length(path);
while(pos('/',path)<>0) do
begin
n:=pos('/',path);
delete(path,1,n)
end;
n:=length(path); //获取 dll 文件名长度
path:=GetModuleName(HInstance);
path:=copy(path,1,j-n) ; //截取路径
result:=pchar(path);
} // 方式1 不代dllname
result:=pchar(GetModuleName(HInstance)); // 方式2 带dllname
end;
然后写了个 exe 去调用他
function GETDPATH()char;stdcall
external 'dynadll'
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:= getdpath;
end;
不管我的返回值是路径 还是路径+dllname 当返回值长度为17左右时,老是不正确显示
如 dll在 使用方式1 目录为 D:/gd_yc/SRC/work D:/浪潮/demo/work F:/1234567890/123 等等时
不代dllname的 返回结果应该是 如 D:/gd_yc/SRC/work/ 这个样子
实际返回给我的是 D:/gd_yc/SRC/wor_ D:/浪潮/demo/wor_ F:/1234567890/12_
_ 标示空格
使用方式2 目录F:/123 返回结果应该是F:/123/dynadll.dll 实际返回是F:/123/dynadll.d_
为什么会这样呢? 希望各位达人告诉我一下
谢谢
function GETDPATH : Pchar ; stdcall
var
path:STRING;
n,j:integer;
begin
{
path:= GetModuleName(HInstance);
j:=length(path);
while(pos('/',path)<>0) do
begin
n:=pos('/',path);
delete(path,1,n)
end;
n:=length(path); //获取 dll 文件名长度
path:=GetModuleName(HInstance);
path:=copy(path,1,j-n) ; //截取路径
result:=pchar(path);
} // 方式1 不代dllname
result:=pchar(GetModuleName(HInstance)); // 方式2 带dllname
end;
然后写了个 exe 去调用他
function GETDPATH()char;stdcall
external 'dynadll'
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:= getdpath;
end;
不管我的返回值是路径 还是路径+dllname 当返回值长度为17左右时,老是不正确显示
如 dll在 使用方式1 目录为 D:/gd_yc/SRC/work D:/浪潮/demo/work F:/1234567890/123 等等时
不代dllname的 返回结果应该是 如 D:/gd_yc/SRC/work/ 这个样子
实际返回给我的是 D:/gd_yc/SRC/wor_ D:/浪潮/demo/wor_ F:/1234567890/12_
_ 标示空格
使用方式2 目录F:/123 返回结果应该是F:/123/dynadll.dll 实际返回是F:/123/dynadll.d_
为什么会这样呢? 希望各位达人告诉我一下
谢谢