Вниз
Скачать: CL | DM;

Снова DOS Path   Найти похожие ветки 

← →
AlexanderMS ©   (2006-05-31 16:56) [0]

Я уже задавал здесь такой вопрос: как превратить строку пути в формате DOS (7 букв + тильда ~ в каждой секции) в нормальный виндоузовский путь. Мне предложили GetLongPathName:

> function GetLongPathName(lpszShortPath, lpszLongPath: PChar;
>  cchBuffer: DWORD): DWORD; stdcall; external "kernel32.dll";

- я оставил на потом, а когда попробовал осуществить - ошибка в RunTime: точка входа ... не найдена. Так и не понял. Подскажите, пожалуйста, как?


← →
Джо ©   (2006-05-31 17:00) [1]

GetLongPathNameA


← →
Джо ©   (2006-05-31 17:02) [2]

Т.е, например, так:

function GetLongPathName(lpszShortPath, lpszLongPath: PChar;
 cchBuffer: DWORD): DWORD; stdcall; external "kernel32.dll" name "GetLongPathNameA"


← →
AlexanderMS ©   (2006-05-31 18:16) [3]

Я сделал так:
procedure TWindow.FormActivate(Sender: TObject);
var
 Longpath : PCHar;
begin
 if (paramstr(1) <> "") and (filename = "")
   then
     begin
       filename := paramstr(1);
       GetLongPathName(PChar(filename), LongPath, 0);
       Filename := String(LongPath);
       readfile
     end
   else newfile

end;


Путь нормальный, а имя файла какое-то странное: Lбi вместо generals.csf. Вот и ошибка выдаётся. Как сделать то же с именем файла?


← →
begin...end ©   (2006-05-31 18:22) [4]

> AlexanderMS ©   (31.05.06 18:16) [3]

Вы не выделили память для буфера, связанного с LongPath.


← →
Джо ©   (2006-05-31 18:24) [5]

Например, так:
var
 Longpath : array [0..MAX_PATH] of Char;

или выделять память динамически через GetMem и освобождать ее FreeMem, когда она уже не нужна.


← →
AlexanderMS ©   (2006-05-31 19:22) [6]

Огромное спасибо! Всё получилось!



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
3-1145957654
kyn66
2006-04-25 13:34
2006.06.18
SQL-запрос с параметрами выдает ошибки


2-1148890598
Barsky
2006-05-29 12:16
2006.06.18
Код ошибки при отправки на SMTP (Indy 9)


1-1146855811
KBsoft
2006-05-05 23:03
2006.06.18
Форма в DLL


2-1148826660
Галинка
2006-05-28 18:31
2006.06.18
Вопрос к TUser и остальным знатокам ООП (навеяно соседней веткой)


15-1148659991
Junk
2006-05-26 20:13
2006.06.18
Никто не пробовал такое реализовать?




   Наверх