Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
ВнизКак копировать файлы с "неправильным" именем Найти похожие ветки
← →
FoxikM © (2008-05-01 09:18) [0]Cтолкнулся с проблемой - надо на дельфи написать программку и не получается через нее копировать файлы с недопустимыми символами в именах и из другой кодовой таблицы, например (символы с двумя точками наверху) :
Kurtlar Vadisi Pusu 3_ Bölüm Part 5 - 9 www_vayturk_com - blog » Blog Archive.htm
Кстати через FAR тоже не получается скопировать такие файлы а Total Commander копирует, только выскакивает предупреждение что в имени файла присутствуют символы из другой кодовой страницы. Может кто знает как решить эту проблему. Хотя бы копирование файлов с символами из другой кодовой таблицы.
← →
Ёжик (2008-05-01 09:42) [1]> FoxikM © (01.05.08 09:18)
А переименОвывать (какими-либо средствами) получается? :)
← →
sniknik © (2008-05-01 09:50) [2]> с недопустимыми символами в именах и из другой кодовой таблицы, например (символы с двумя точками наверху) :
это не недопустимые символы, это юникод. копировать можно попробовать с помощью CopyFileExW
← →
FoxikM © (2008-05-01 10:52) [3]
> > с недопустимыми символами в именах и из другой кодовой
> таблицы, например (символы с двумя точками наверху) :
> это не недопустимые символы, это юникод. копировать можно
> попробовать с помощью CopyFileExW
Я и написал что копировать нужно файлы с именами с недопустимыми символами (если возможно) и с символами из другой кодовой таблицы. Но мне хотя бы с юникодом разобраться.
Был такой код:
Result := Windows.CopyFile(Pchar(SourceDir + SR.Name), Pchar(TargetDir +
SR.Name), False);
Попробовал переделать:
Resutl := CopyFileExW(PWidechar(SourceDir + SR.Name),
PWidechar(TargetDir + SR.Name), nil, nil, nil, 0);
Все равно не работает.
← →
Хитрий Лис (2008-05-01 12:16) [4]
function CopyFileExA(lpExistingFileName, lpNewFileName: PAnsiChar;
Resutl := CopyFileExW(PWidechar(SourceDir + SR.Name), PWidechar(TargetDir + SR.Name),
← →
FoxikM © (2008-05-01 12:26) [5]
> function CopyFileExA(lpExistingFileName, lpNewFileName:
> PAnsiChar;
> Resutl := CopyFileExW(PWidechar(SourceDir + SR.Name), PWidechar(TargetDir
> + SR.Name),
У меня такой же код не работает, где ошибка?
← →
Хитрий Лис (2008-05-01 12:47) [6]Прошу прощения - не то отправил ...
Ошибка у вас вероятно в том - что вы приводите к PWideChar
Насколько я понял, SR имеет тип TSearchRec т.е. SR.Name типа AnsiString.
А для CopyFileExW иначально нужен PWideChar, поэтому посмотрите насколько корректно в вашем случае работает такое приведение типов.
← →
sniknik © (2008-05-01 12:54) [7]> Попробовал переделать:
> Resutl := CopyFileExW(PWidechar(SourceDir + SR.Name),
> PWidechar(TargetDir + SR.Name), nil, nil, nil, 0);
типы, и какими функциями они туда значения получают?
> У меня такой же код не работает, где ошибка?
ошибка в том, что менять нужно не одно звено, а все при работе с юникодом. если где останется обычная(/анси) строка то не получится.
проще всего конечно поставить компоненты для работы с юникодом и работать только с ними (/ждать поддержки в дельфи/перейти на другой язык).
... правда не знаю есть в TNT перекрытые FindFirst, ...Next, TSearchRec. если нет то хотя бы на принципы работы том посмотри.
← →
Хитрий Лис (2008-05-01 12:55) [8]Таким образом есть два способа решения задачи:
1. Переделать (или поискать) процедуру поиска файлов для работы с юникодом.
2. Попытаться получить unicod-имя файла по ansi-имени.
← →
Хитрий Лис (2008-05-01 12:56) [9]Упс... пока писал Николай Батькович уже ответили :)
← →
Psycho © (2009-01-04 13:52) [10]А TOpenDialog просто заменяет у себя в Files "ö" на "o", и файл не находится. Как быть?)
← →
Плохиш © (2009-01-04 16:57) [11]
> Psycho © (04.01.09 13:52) [10]
>
> А TOpenDialog
А кто сказал, что он преднозначен для работы с именами файлов в юникоде?
> sniknik © (01.05.08 12:54) [7]
>
>
> проще всего конечно поставить компоненты для работы с юникодом
> и работать только с ними (/ждать поддержки в дельфи/перейти
> на другой язык).
> ... правда не знаю есть в TNT перекрытые FindFirst, ...Next,
> TSearchRec. если нет то хотя бы на принципы работы том
> посмотри.
>
Полчаса работы, переписать их с использованием системных функций, оканчивающихся на W ;-)
← →
Psycho © (2009-01-04 17:19) [12]Ну это логично, что не предназначен, ну так что использовать? Или модифицировать его?
← →
Anatoly Podgoretsky © (2009-01-04 20:48) [13]
> надо на дельфи написать программку и не получается через
> нее копировать файлы с недопустимыми символами в именах
Это не возможно, такие имена должны преобразовываться в допустимую форму.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c