Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.075 c
5-1128496274
MegaVolt
2005-10-05 11:11
2006.04.02
Множество компонентов в одном контейнере. Как делать?


2-1142584514
Кицум
2006-03-17 11:35
2006.04.02
Как в СтригГрид вывести картинку?


2-1142845601
bolbes
2006-03-20 12:06
2006.04.02
Каталог


15-1141749991
Новичоккк
2006-03-07 19:46
2006.04.02
ASM в Delphi


2-1142475814
tigra
2006-03-16 05:23
2006.04.02
DBGrid