![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Кирилица в имени файла. [D7, WinXP]
The Sound © (2005-11-12 18:56:00)Привет. Сначала часть кода:
var
FileN :string;
fob :file of byte;
FSize :Longint;
...
procedure GetSize(const FileN :String);
begin
assignfile(fob,FileN);
//writeln(FileN);
//readln;
reset(fob);
FSize := FileSize(fob);
CloseFile(fob);
end;
Процедура работает отлично, но если переменная FileN содержит кирилицу, сразу выскакивает ошибка(Некорректное имя файла, фаил не найден). Подскажите как это исправить? Спасибо.
P.S. Если это важно, приложение консолевое.
The Sound (2005-11-12 21:38:00) [1]Спасибо за ответ, но...
При использовании "function ToChar" ( GetSize(ToChar(FileN)); ), вылетает ошибка: "File acess denied"(нет доступа к файлу?).
А при "function FileSizeByName" ( FileSizeByName(FileN); )- "Can't open file C:\л
sniknik (2005-11-12 19:47:00) [2]> P.S. Если это важно, приложение консолевое.
очень важно, т.к. в консоли часто ввод/вывод в Oem кодировке
т.е. надо использовать (если у тебя это так)
function ToChar(const Str: String): String;
begin
SetLength(result, Length(Str));
OemToChar(PChar(Str), PChar(result));
end;
GetSize(ToChar(xxx))
а еще лучше и GetSize поменять на типа такого (© компоненты Indy)
function FileSizeByName(const AFilename: string): Int64;
begin
with TFileStream.Create(AFilename, fmOpenRead or fmShareDenyNone) do
try
Result := Size;
finally Free; end;
end;