Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизПолучть из пути с короткими именами путь с длинными именами Найти похожие ветки
← →
jTommy (2006-11-02 01:22) [0]Казалось бы простейшая задача... Вообщем возможно ли из пути с короткими именами получить путь с длинными именами? Например из "C:\PROGRA~1\THEBAT~1\" получить "C:\Program Files\The Bat\"
← →
Джо © (2006-11-02 01:36) [1]GetLongPathName, странно, да? ;)
← →
Германн © (2006-11-02 01:38) [2]Где-то, когда-то, кто-то мне подсказал вариант:
{function GetFullPathNameW(lpFileName: PWideChar; nBufferLength: DWORD;
lpBuffer: PWideChar; var lpFilePart: PWideChar): DWORD; stdcall;}
function GetLongFName(FName: String): String;
var
Str2: String;
GetLongPathName: Function (ShortPathName: PChar; LongPathName: PChar;
cchBuffer : Integer): Integer Stdcall;
Handle : THandle;
begin
Result:="";
GetLongPathName:=nil;
SetLength(Str2,256);
Handle:=GetModuleHandle("kernel32.dll");
if Handle = 0 then exit;
@GetLongPathName := GetProcAddress(Handle, "GetLongPathNameA");
if Assigned(GetLongPathName) and (GetLongPathName(PChar(FName),PChar(Str2),256) <> 0)
then Result:=Str2;
end;
← →
MikePetrichenko © (2006-11-02 02:18) [3]
> Германн © (02.11.06 01:38) [2]
> Где-то, когда-то, кто-то мне подсказал вариант:
Зачем же так автора пугать?
← →
Ketmar © (2006-11-02 02:20) [4]>[3] MikePetrichenko(c) 2-Nov-2006, 02:18
>Зачем же так автора пугать?
а чтобы не думал, что жить легко.
← →
Германн © (2006-11-02 02:50) [5]
> MikePetrichenko © (02.11.06 02:18) [3]
>
>
> > Германн © (02.11.06 01:38) [2]
> > Где-то, когда-то, кто-то мне подсказал вариант:
>
> Зачем же так автора пугать?
>
Поясни, плиз! Чем и как я кого--то "испугал"?
← →
MikePetrichenko © (2006-11-02 03:58) [6]
> {function GetFullPathNameW(lpFileName: PWideChar; nBufferLength:
> DWORD;
> lpBuffer: PWideChar; var lpFilePart: PWideChar): DWORD;
> stdcall;}
> function GetLongFName(FName: String): String;
> var
> Str2: String;
> GetLongPathName: Function (ShortPathName: PChar; LongPathName:
> PChar;
> cchBuffer : Integer): Integer Stdcall;
> Handle : THandle;
> begin
> Result:="";
> GetLongPathName:=nil;
> SetLength(Str2,256);
> Handle:=GetModuleHandle("kernel32.dll");
> if Handle = 0 then exit;
> @GetLongPathName := GetProcAddress(Handle, "GetLongPathNameA");
>
> if Assigned(GetLongPathName) and (GetLongPathName(PChar(FName),
> PChar(Str2),256) <> 0)
> then Result:=Str2;
> end;
Проще надо быть :)
← →
Германн © (2006-11-02 13:25) [7]
> MikePetrichenko © (02.11.06 03:58) [6]
>
> Проще надо быть :)
Да я бы и не против, но в сабже указано Д6, а не Д2006!
← →
jTommy (2006-11-02 14:12) [8]Определил функцию в dpr-файле (программа консольная):
[code]
Function GetLongPathName(ShortPathName: PChar; LongPathName: PChar; cchBuffer: Integer): Integer; external "kernel32.dll" name "GetLongPathNameA";
[/code]
Не работает... Перенес в отдельный модуль:
[code]
interface
Function GetLongPathName(ShortPathName: PChar; LongPathName: PChar; cchBuffer: Integer): Integer; stdcall;
implementation
Function GetLongPathName(ShortPathName: PChar; LongPathName: PChar; cchBuffer: Integer): Integer; external "kernel32.dll" name "GetLongPathNameA";
[/code]
Работает... Странно, видимо надо обновить свои знания о дин. библиотеках.
Вариант Германна конечно тоже работает, даже все ясно что там и для чего :)
Вообщем, всем большое спасибо.
← →
Джо © (2006-11-02 14:26) [9]> Определил функцию в dpr-файле (программа консольная):
> Function GetLongPathName(ShortPathName: PChar; LongPathName:
> PChar; cchBuffer: Integer): Integer; external "kernel32.dll"
> name "GetLongPathNameA";
← →
Джо © (2006-11-02 14:27) [10]> Определил функцию в dpr-файле (программа консольная):
> Function GetLongPathName(ShortPathName: PChar; LongPathName:
> PChar; cchBuffer: Integer): Integer; external "kernel32.dll"
> name "GetLongPathNameA";
> Не работает...
А где stdcall?
← →
jTommy (2006-11-02 15:28) [11]
> Джо © (02.11.06 14:27) [10]
> А где stdcall?
Вот, я так и думал, что какая-нибудь мелочь.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.08 c