Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
ВнизСнова 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 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c