Головна сторінка
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.58 MB
Час: 0.047 c
3-74595
b_baranov
2002-12-04 02:34
2002.12.23
Як перехопити занесення в базу записи, що містить Null-значення


1-74646
bAgmAn
2002-12-12 18:14
2002.12.23
Як видалити не порожній католог


1-74641
Ag2002
2002-12-10 14:48
2002.12.23
Очікування


1-74830
Vavan
2002-12-11 21:56
2002.12.23
Розмір колонок в DbGrid


14-74971
kronprince
2002-12-03 10:26
2002.12.23
Раніше мені ця затія DeMoN-777 здавалася дурною :(





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