FHandle in THandleStream better protected lazarus / 7-LCL ---------------------------------------------------------------------- Borneq · 2009-12-27 14:25 I write class TFileStreamW which is similar to TFileStream but argument filename is WideString insted of string I want constructor TFileStreamW.Create(const FileName: WideString; Mode: Word); begin   if Mode = fmCreate then   begin     inherited Create(FileCreateW(FileName));     if FHandle < 0 then       raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]);   end   else   begin     inherited Create(FileOpenW(FileName, Mode));     if FHandle < 0 then       raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);   end; end; I must use FHandle but it is private in classesh.inc Better if it will protected ---------------------------------------------------------------------- Marc · 2009-12-27 16:16 why not checking the result of FileCreateW(FileName) ? ---------------------------------------------------------------------- Borneq · 2009-12-27 17:57 Quote from: Marc on December 27, 2009, 05:16:30 pmwhy not checking the result of FileCreateW(FileName) ? Right! Constructor will be: constructor TFileStreamW.Create(const FileName: WideString; Mode: Word); var   Handle: Integer; begin   if Mode = fmCreate then   begin     Handle := FileCreateW(FileName);     if Handle < 0 then       raise EFCreateError.CreateResFmt(@SFCreateError, [FileName]);   end   else   begin     Handle := FileOpenW(FileName, Mode);     if Handle < 0 then       raise EFOpenError.CreateResFmt(@SFOpenError, [FileName]);   end;   inherited Create(Handle); end; ---------------------------------------------------------------------- Borneq · 2009-12-27 18:01 But.. How to close? destructor TFileStreamW.Destroy; begin   if FHandle >= 0 then FileClose(FHandle);   inherited Destroy; end; Must exists static variable indicating whether correctly open/create operation passed ---------------------------------------------------------------------- Marc · 2009-12-27 18:05 Wouldn't the inherited handle stream close it ? (otherwise keep a ref yourself) ---------------------------------------------------------------------- Borneq · 2009-12-27 19:31 Quote from: Marc on December 27, 2009, 07:05:53 pmWouldn't the inherited handle stream close it ? Yes,I noticed after sending message Thanks