Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

Проблема с получением короткого пути   Найти похожие ветки 

 
Destroyer ©   (2006-07-27 20:00) [0]

Такая проблема. Есть список из путей к файлам. Для них надо найти короткие пути (для *.bat файла).
Все хорошо, но при обработке такого пути:
C:\Documents and Settings\Username\Local Settings\Temporary Internet Files\Content.IE5\GTAZK1YV\?an?ao ?ON 6 ?anou1(nooaaioai).doc
В ShortPath возвращается предыдущее значение, т.е. не то что должно получиться в данный момент. Возможно это из-за имени файла в конце в неправильной кодировке. Фаил переименовать нельзя, он занят.
Как это исправить?
Код:
var
ClCache     : textfile;
ShortPath   : array [0..MAX_PATH] of Char;
I           : integer;
LockedFiles : TStrings;

for j:=0 to LockedFiles.Count-1 do
begin
GetShortPathName(PChar(LockedFiles[j]),ShortPath,Sizeof(ShortPath)-1);
writeln(ClCache,"del "+ """+ ShortPath +""");
end;


 
Степан   (2006-07-27 21:16) [1]

procedure GetShortFileNameEx(FileName: String): String;
var
 ChrPos: Integer;
begin
 repeat
   ChrPos := Pos("\", FileName);
   if ChrPos > 0 then
     Delete(FileName, 0, ChrPos);
 until ChrPos = 0;
 Result := FileName;
end;


По-моему, должно работать... Но если что, алгоритм ясен, как 2х2!..


 
Игорь Шевченко ©   (2006-07-27 22:05) [2]


> writeln(ClCache,"del "+ """+ ShortPath +""");


Здесь можно указывать длинное имя


 
Destroyer ©   (2006-07-27 22:20) [3]

Игорь Шевченко, я знаю что можно, но дело в том, что генерируется *.bat фаил, где нужно использовать короткие пути
Степан, может и 2х2, но я что-то не понял.
Короткий путь это типа:
C:\DOCUME~1\Username\LOCALS~1\TEMPOR~1\index.dat
Неужели искать слэши и "в ручную" приписывать ~1 ?
Подскажите пожалуйста.


 
Германн ©   (2006-07-27 22:49) [4]


> в ручную" приписывать ~1

Почему именно ~1? Может быть и ~2 и ~3 и т.д.


 
Игорь Шевченко ©   (2006-07-27 23:16) [5]


> Игорь Шевченко, я знаю что можно, но дело в том, что генерируется
> *.bat фаил, где нужно использовать короткие пути


В bat-файле можно использовать длинные имена.


 
Германн ©   (2006-07-27 23:43) [6]

Даже несмотря на замечание Игоря

> В bat-файле можно использовать длинные имена.

имхо, проблема не исчезнет. Если функция GetShortPathName не смогла найти на диске файл с именем C:\Documents and Settings\Username\Local Settings\Temporary Internet Files\Content.IE5\GTAZK1YV\?an?ao ?ON 6 ?anou1(nooaaioai).doc, значит и cmd его не найдёт.


 
Степан   (2006-07-28 10:17) [7]

Мда.. я тебя неправильно понял... Извини.

На крайняк можно попробовать удалить из пути имя файла, вызвать GetShortPathName, а потом прибавить к нему "?an?ao ?ON 6 ?anou1(nooaaioai).doc". Если это не сработает, тогда попробуй Unicode функцию может тогда функцию GetShortPathNameW



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

Форум: "WinAPI";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.043 c
2-1164028160
Kelim
2006-11-20 16:09
2006.12.10
Блокирование/разблокирование устройств


15-1164213822
Сэм
2006-11-22 19:43
2006.12.10
DDR 1024Mb PC 3200 SAMSUNG


8-1146079729
Azeem
2006-04-26 23:28
2006.12.10
контурные треугольники


15-1163739160
Ded
2006-11-17 07:52
2006.12.10
ЗАДАЧА


6-1153474419
bobbi
2006-07-21 13:33
2006.12.10
И снова отправка почты ...........





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский