Форум: "Прочее";
Текущий архив: 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.004 c