Форум: "KOL";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
ВнизДобавить NewReadFileStreamW Найти похожие ветки
← →
Alextp © (2006-02-21 22:31) [0]Предлагаю по аналогии с функцией NewReadFileStream добавить
NewReadFileStreamW, принимающую WideString имя файла.
Соответственно, добавится функция FileCreateW, которая вызывает под NT - CreateFileW, а под 9x, для совместимости, CreateFileA.function NewReadFileStreamW(const FileName: WideString): PStream;
begin
Result := _NewStream( BaseFileMethods );
Result.fMethods.fRead := ReadFileStreamProc;
Result.fData.fHandle := FileCreateW( FileName,
ofOpenRead or ofShareDenyWrite or
ofOpenExisting );
end;
function FileCreateW(const FileName: WideString; OpenFlags: DWord): THandle;
var
Attr: DWORD;
vi: TOsVersionInfo;
IsNT: boolean;
begin
vi.dwOSVersionInfoSize:= SizeOf(vi);
GetVersionEx(vi);
IsNT:= vi.dwPlatformId=VER_PLATFORM_WIN32_NT;
Attr := (OpenFlags shr 16) and $1FFF;
if Attr = 0 then Attr := FILE_ATTRIBUTE_NORMAL;
if IsNT then
Result := CreateFileW( PWChar(FileName), OpenFlags and $F0000000,
OpenFlags and $F, nil, (OpenFlags shr 8) and $F,
Attr, 0 )
else
Result := CreateFileA( PChar(string(FileName)), OpenFlags and $F0000000,
OpenFlags and $F, nil, (OpenFlags shr 8) and $F,
Attr, 0 );
end;
← →
Vladimir Kladov (2006-02-22 12:03) [1]Проблем никаких нет, вопрос только: почему это настолько необходимо? Или есть какие-то ситуации, когда национализированное имя файла не удается использовать как обычную строку? Интересно мне, может файловая система понимать символы unicode в именах файлов в виде какой-нибудь кодировки типа %XXXX? У меня Fat32, я могу как-нибудь проверить сие или только под NTFS такое бывает?
← →
AlexeyT © (2006-02-22 22:05) [2]
> Проблем никаких нет, вопрос только: почему это настолько
> необходимо?
Просто хорошо бы добавить поддержку юникодных имен.
Это касается не только потоков, а вообще всей KOL.
Ситуации, когда нельзя передать имя файла как обычную ANSI-строку, бывают: например, китайские или японские имена файлов из иероглифов.
Создать юникодные имена можно только под NT/2000/XP, от файловой системы это AFAIK не зависит, на FAT32 я такие имена кажется создавал.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c