Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "WinAPI";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

Вниз

Ка дізнатися повний шлях до файлу? Знайти схожі гілки


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;
починати
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;
починати
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;
було
GetLongPathName: function (pszShortName, pszLongName: PChar;
cchBuffer: Integer): Integer stdcall;
Handle: HINST;
Buffer: array[0..MAX_PATH-1] of AnsiChar;

function InternalGetLongName(FileName: string): string;
було
SearchRec: TSearchRec;
FindResult: Integer;
Path, S1, S2, SN: string;
починати
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);
намагатися
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;
в кінці кінців
FindClose (SearchRec);
end;
end else Result:=FileName;

end;

починати
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 вся гілка

Форум: "WinAPI";
Поточний архів: 2002.12.23;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.59 MB
Час: 0.03 c
1-74794
Че
2002-12-11 13:31
2002.12.23
Текст в Delphi !!!! HELP


14-74910
3d [Power]
2002-11-30 13:15
2002.12.23
Delphi5: Compiler Internal error BC2241


1-74799
Центр
2002-12-11 13:22
2002.12.23
BPL (частина 3)


3-74572
Fishka
2002-12-04 14:50
2002.12.23
Insert into ... select ..... - Все чудово. Але Мемо-поля?


1-74644
Філат
2002-12-12 13:40
2002.12.23
RadioGroup?





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська