Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
15-1164352122
Цитатник
2006-11-24 10:08
2006.12.17
Разработка программ группами программистов.


2-1164896709
KyRo
2006-11-30 17:25
2006.12.17
DBGRID с разноцветніми строками


15-1164404890
J_box
2006-11-25 00:48
2006.12.17
Никто не попадал в подобную ситуацию?


3-1160222126
Kley
2006-10-07 15:55
2006.12.17
подключится к БД Pervasive.SQL из Delphi 7.0


15-1164353049
Железяка
2006-11-24 10:24
2006.12.17
Закрыть доступ в сеть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский