Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];

Вниз

Share режим и TFileStream   Найти похожие ветки 

 
Алексей Ы.   (2009-03-19 01:04) [0]

Привет.

Нашел тут странную конструкцию в 2009, не могу указать Share режимы - они просто не работают в TFileStream  

fmShareDenyWrite  
fmShareDenyRead  
fmShareDenyNone
итп


constructor TFileStream.Create(const AFileName: string; Mode: Word; Rights: Cardinal);
begin
 if Mode = fmCreate then
 begin
   inherited Create(FileCreate(AFileName, Rights));
   if FHandle = INVALID_HANDLE_VALUE then
     raise EFCreateError.CreateResFmt(@SFCreateErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]);
 end
 else
 begin
   inherited Create(FileOpen(AFileName, Mode));
   if FHandle = INVALID_HANDLE_VALUE then
     raise EFOpenError.CreateResFmt(@SFOpenErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]);
 end;
 FFileName := AFileName;
end;


function FileCreate(const FileName: string; Rights: Integer): Integer;
{$IFDEF MSWINDOWS}
begin
 Result := FileCreate(FileName);   << НУ и где они?
end;

function FileCreate(const FileName: string): Integer;
{$IFDEF MSWINDOWS}
begin
 Result := Integer(CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE,
   0,  << Shared Mode - не указывается вообще
nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0));
end;

Это баг в 2009 только?


 
Palladin ©   (2009-03-19 01:12) [1]

иди и читай справку по режимам открытия... в особенности чем fmCreate отличается от других...
первоткрыватель млин...


 
Алексей Ы.   (2009-03-19 01:16) [2]

Получаем.

При создании-открытии файла fmCreate - никакие Share режимы нельзя указать вообще.
При открытии их также нельзя указать в Rigths.

Когда их можно указать :
только при открытии (т.е. файл должен быть уже до этого создан) и с комбинацией с Mode.

Спрашивается нафига нужно поле Rights в конструкторе TFileStream ?


 
Palladin ©   (2009-03-19 01:28) [3]


> При создании-открытии файла fmCreate - никакие Share режимы
> нельзя указать вообще.

ага, ибо читай про CREATE_ALWAYS


> При открытии их также нельзя указать в Rigths.

фантазируешь на ночь? ну да иногда полезно перед сном... но как бы хотелось в общих словах понять с каких щей ты это взял. и самое интересное тут же дальше пишешь


> Когда их можно указать :только при открытии


ты ломаешь мне мозг


 
Алексей Ы.   (2009-03-19 01:38) [4]


> ага, ибо читай про CREATE_ALWAYS


Вы хотите сказать что при CREATE_ALWAYS нельзя указать FILE_SHARE_READ (и в целом Share режимы)?
Можно, но в TFileStream это нельзя. Об этом и речь.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.05.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.005 c
15-1237360764
немо2
2009-03-18 10:19
2009.05.17
MSSQL2000 и Query Analyzer и управление изоляцией


15-1236707812
PEAKTOP
2009-03-10 20:56
2009.05.17
Семинар по Delphi2009 в Москве и Питере


2-1238564131
Руслан
2009-04-01 09:35
2009.05.17
update


3-1220893388
kaif
2008-09-08 21:03
2009.05.17
ADO и MS SQL - посоветуйте хорошую ссылку


15-1237292509
Unknown user
2009-03-17 15:21
2009.05.17
Просмотр связей между модулями в проектах Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский