Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Снова DOS Path [D7, XP]


AlexanderMS ©   (2006-05-31 16:56:00) 

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

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

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


AlexanderMS   (2006-05-31 19:22:00) [1]

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


Джо   (2006-05-31 18:24:00) [2]

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

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


begin...end   (2006-05-31 18:22:00) [3]

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

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


AlexanderMS   (2006-05-31 18:16:00) [4]

Я сделал так:
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. Вот и ошибка выдаётся. Как сделать то же с именем файла?


Джо   (2006-05-31 17:02:00) [5]

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

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


Джо   (2006-05-31 17:00:00) [6]

GetLongPathNameA


Наверх

Титульная страница Поиск, карта сайта Написать письмо