Главная страница
    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.006 c
2-1238746934
Iriss
2009-04-03 12:22
2009.05.17
работа с Gridom


2-1238654080
Mozgan
2009-04-02 10:34
2009.05.17
Заголовок и URL Intrnet Explorer


15-1236699497
Кое кто
2009-03-10 18:38
2009.05.17
Включить "Администратор"


15-1237307414
KSergey
2009-03-17 19:30
2009.05.17
Посетил концерт Гару


3-1221022999
Alexey
2008-09-10 09:03
2009.05.17
SQL-запрос в 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский