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

Вниз

Ка узнать полный путь файла?   Найти похожие ветки 

 
bent   (2002-11-10 06:56) [0]

Ка узнать полный путь файла если имеется короткий? Есть такая функция GetFullPathName, дык чё-то не работает. Может быть есть какая-нибудь альтернатива этой функции? А межет быть я чё-то не так делаю?


 
MBo ©   (2002-11-10 07:22) [1]

> межет быть я чё-то не так делаю
Вероятно. Покажи, как делаешь


 
bent   (2002-11-10 07:27) [2]

GetFullPathName("pChar1", 123,"Короткое имя","pChar1");


 
MBo ©   (2002-11-10 07:33) [3]

Память выдели. Короткое имя - первый параметр


 
MBo ©   (2002-11-10 08:13) [4]

Что-то у меня GetFullPathName не расширило имя ;(((

Тогда можно так:
procedure TForm1.Button1Click(Sender: TObject);
var SR:TSearchRec;
begin
if FindFirst("C:\Windows\bluela~1.bmp",faAnyFile,SR)=0 then
Caption:=SR.FindData.cFileName;
end;


 
Василий2 ©   (2002-11-10 08:15) [5]

Зайди в FAR и поищи :))


 
bent   (2002-11-10 08:29) [6]

>MBo
>Тогда можно так:
>procedure TForm1.Button1Click(Sender: TObject);
var SR:TSearchRec;
>begin
>if FindFirst("C:\Windows\bluela~1.bmp",faAnyFile,SR)=0 then
> Caption:=SR.FindData.cFileName;
>end;

Этот код даст только полное имя файла, а мне нужен путь



 
MBo ©   (2002-11-10 08:38) [7]

приведи пример, что есть, а что надо получить


 
bent   (2002-11-10 16:36) [8]

Есть короткий путь файла, типа C:\WINDOWS\РАБОЧИ~1\ТЕКСТО~1.TXT,
а надо C:\WINDOWS\Рабочий стол\Текстовый документ.txt


 
Song ©   (2002-11-10 16:39) [9]

:-) Дык у тебя же путь-то константой задан, вот и прибавь его сам в Caption. А если была бы не константа, тогда можно так:

Тогда можно так:
procedure TForm1.Button1Click(Sender: TObject);
var SR:TSearchRec;
FileName:String;
begin
FileName:="C:\Windows\bluela~1.bmp";
if FindFirst(FileName,faAnyFile,SR)=0 then
Caption:=ExtractFilePath(FileName)+SR.FindData.cFileName;
end;


 
Danger ©   (2002-11-11 00:23) [10]

Вот по моему оптимальный вариант для этого:
function GetLongName(const FileName: string): string;
var
GetLongPathName: function (pszShortName, pszLongName: PChar;
cchBuffer: Integer): Integer stdcall;
Handle: HINST;
Buffer: array[0..MAX_PATH-1] of AnsiChar;

function InternalGetLongName(FileName: string): string;
var
SearchRec: TSearchRec;
FindResult: Integer;
Path, S1, S2, SN: string;
begin
if (FileName = "") or
(GetFileAttributes(PChar(FileName)) = $FFFFFFFF) then begin
Result:="";
Exit;
end;
Path:=ExtractFilePath(FileName);
S1:=FileName;
Delete(S1, 1, 1);
if (Path<>"") and (S1<>":") and (S1<>"\") then begin
FindResult:=FindFirst(Path+"*.*", faAnyFile, SearchRec);
try
Result:=FileName;
SN:=ExtractFileName(FileName);
while FindResult = 0 do begin
S2:=SearchRec.Name;
if (SN = S2) or (SN = SearchRec.FindData.cAlternateFileName) then begin
Result:=InternalGetLongName(ExcludeTrailingBackslash(Path))+"\"+S2;
Break;
end;
FindResult:=FindNext(SearchRec);
end;
finally
FindClose(SearchRec);
end;
end else Result:=FileName;

end;

begin
Handle:=GetModuleHandle("kernel32.dll");
@GetLongPathName:=GetProcAddress(handle, "GetLongPathNameA");
if Assigned(GetLongPathName) then begin
if GetLongPathName(PChar(FileName), @Buffer[0], SizeOf(Buffer))<>0
then Result:=PChar(@Buffer[0]) else Result:=FileName;
end else Result:=InternalGetLongName(FileName);
end;


 
bent   (2002-11-11 07:12) [11]

Во!


 
Song ©   (2002-11-11 09:08) [12]

Пушкой по воробьям... :)


 
Dimka Maslov ©   (2002-11-11 12:59) [13]

>Song
Пушка работает только под 95 виндой, в которой нет апи функции GetLongPathName, в более поздних версиях эта функция имеется, и именно она и вызывается



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
8-74848
МитяЙ2
2002-09-01 07:48
2002.12.23
Как узнать какой цвет прозрачный у объекта TIcon?


1-74799
oss
2002-12-11 13:22
2002.12.23
BPL (часть 3)


14-74926
Сатир
2002-10-30 13:26
2002.12.23
Команда шкодеров


1-74837
Groove_
2002-12-12 10:45
2002.12.23
tcp/ip


1-74833
Danger
2002-12-11 23:38
2002.12.23
Как сгенерить 14-значное цеолое число