Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизУдаление файла со спец.символом в имени из Делфи Найти похожие ветки
← →
Кашперук Иван (2006-02-28 18:20) [0]Пытаюсь удалить файл
Пе[кракозябля]тр.xls
пробовал DeleteFile, Erase
Обе ругаются - не могу найти файл.
Как удалить?
Кракозябля - часть рамки (вертикальная и полугоризонтальная полоска), как говорит товарищ Word
PS Средствами Винды удаляется нормально!!!
← →
Desdechado © (2006-02-28 18:23) [1]попробуй не вводить имя файла, а через OpenDialog выбрать его, а потом удалять
← →
Crash Coredump © (2006-02-28 18:34) [2]DeleteFileW
← →
Кашперук Иван (2006-02-28 18:55) [3]Не работает к сожалению ни то, ни то
Вот код: (последней строкой - путь к файлу в ASCII кодах)
if OpenDialog1.Execute then
begin
error := DeleteFileW(PWideChar(OpenDialog1.FileName));
end;
if not error then
ShowMessage(SysErrorMessage(GetLastError));
// ShowMessage(#99#58#92#207#229#166#242#240#126#87#68#46#88#76#83);
← →
begin...end © (2006-02-28 19:00) [4]DeleteFile(PWideChar(WideString(OpenDialog1.FileName)))
← →
begin...end © (2006-02-28 19:02) [5][4] -- DeleteFileW, конечно же.
← →
Кашперук Иван (2006-02-28 19:05) [6]И так не удаляет.
И если заменить на DeleteFileW тоже
← →
Crash Coredump © (2006-02-28 19:13) [7]FindFirstFileW + DeleteFileW
begin...end © (28.02.06 19:00) [4]
После OPenDialog он уже Ansi, так что перекодировать его в Unicode бесполезно.
Проблема в том, что в имени файла есть не ANSI-символ, который после перекодировки в ANSI становится совсем не тем, который на самом деле. И после преобразования его в Unicode функцией DeleteFile его имя не такое, какое на диске.
← →
Кашперук Иван (2006-02-28 19:18) [8]а проще? я не делаю поиск - хочу просто удалить (точнее, я то делаю, и потом попробую через W - версии поиска)
Из Пуск->Выполнить это работает и удаляет файл
cmd /c del e:\Пе╡тр~WD.XLS
а из делфи это не работате:
ShellExecute(Application.Handle, "open", "cmd.exe" PAnsiString("/c del " + OpenDialog1.FileName), nil, sw_hide);
Как выбрать имя этого файла, чтоб оно не преобразовывалось в ANSI?
← →
Кашперук Иван (2006-02-28 19:24) [9]Просто вот этот код тоже не работает - хотя по идее он сам должен был строку преобразовать в Wide
DeleteFileW("C:\Пе¦тр~WD.XLS");
← →
Игорь Шевченко © (2006-03-01 00:43) [10]Кашперук Иван (28.02.06 19:18) [8]
Если в имени файла есть символ Unicode, то его бесполезно передавать в ANSI-функции.
> Из Пуск->Выполнить это работает и удаляет файл
> cmd /c del e:\Пе╡тр~WD.XLS
Диалог "Пуск|выполнить" работает с Unicode-символами.
Может быть, стоит у файла имя изменить, чтобы он создавался без неприличных символов ? Тоже,знаете ли, выход.
← →
Германн © (2006-03-01 02:42) [11]Я, конечно, "лопух", но Windows Commander ака Total Commander при мне.
2 Игорь Шевченко © (01.03.06 00:43) [10]
TC прекрасно удаляет сию лабуду. Как - не знаю, но для него это не проблема.
← →
AlexeyT © (2006-03-01 09:52) [12]
> TC прекрасно удаляет сию лабуду. Как - не знаю, но для него
> это не проблема.
TC удаляет файл через его _короткое_ имя (8.3). Если у файла нет короткого имени, TC его не удалит.
← →
vovnuke © (2006-03-01 10:16) [13]Попробуй перед операциями с файлом выполнить
SetFileApisToOEM,
а после
SetFileApisToAnsi
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.046 c