Index: oup/rewrite/DataAccess/ConnectionManager.pas
===================================================================
--- oup/rewrite/DataAccess/ConnectionManager.pas	(revision 93)
+++ oup/rewrite/DataAccess/ConnectionManager.pas	(revision 97)
@@ -18,4 +18,5 @@
     function GetConnection(ConnectionID: Integer): TDataAccess;
     function GetConnectionByIndex(Index: Integer): TDataAccess;
+    function GetConnectionIndex(ConnectionID: Integer): Integer;
     procedure RemoveConnection(ArrayIndex: Integer);
   protected
@@ -24,4 +25,5 @@
     property Connection[ConnectionID: Integer]: TDataAccess read GetConnection;
     property ConnectionByIndex[Index: Integer]: TDataAccess read GetConnectionByIndex;
+    property ConnectionIndexByID[ConnectionID: Integer]: Integer read GetConnectionIndex;
     property OnCoonnectionListChanged: TConnectionListChangedEvent read FConnectionListChanged write FConnectionListChanged;
 
@@ -37,4 +39,8 @@
 
 
+var
+  ConManager: TConnectionManager;
+
+
 implementation
 uses
@@ -49,4 +55,18 @@
 begin
   Result := Length(FConnections);
+end;
+
+function TConnectionManager.GetConnectionIndex(ConnectionID: Integer): Integer;
+var
+  i: Integer;
+begin
+  Result := -1;
+  if Count > 0 then
+    for i := 0 to Count - 1 do
+      if ConnectionByIndex[i].ConnectionID = ConnectionID then
+      begin
+        Result := i;
+        Break;
+      end;
 end;
 
@@ -240,3 +260,7 @@
 
 
+initialization
+  ConManager := TConnectionManager.Create;
+finalization
+  ConManager.Free;
 end.
Index: oup/rewrite/DataAccess/DataAccess.pas
===================================================================
--- oup/rewrite/DataAccess/DataAccess.pas	(revision 93)
+++ oup/rewrite/DataAccess/DataAccess.pas	(revision 97)
@@ -13,12 +13,15 @@
     FFileName:      String;
     FBackend:       TDataBackend;
+    FDataOS:        TDataOS;
     FLevelNumber:   Integer;
     FChangeRights:  TChangeRights;
+    procedure SetDataOS(DataOS: TDataOS);
   protected
   public
     property ConnectionID: Integer      read FConnectionID;
-    property FileName:    String        read FFileName;
-    property Backend:     TDataBackend  read FBackend;
-    property LevelNumber: Integer       read FLevelNumber;
+    property FileName:     String       read FFileName;
+    property Backend:      TDataBackend read FBackend;
+    property DataOS:       TDataOS      read FDataOS write SetDataOS;
+    property LevelNumber:  Integer      read FLevelNumber;
 
     constructor Create(FileName: String; ConnectionID: Integer; var Msg: TStatusMessages); virtual; abstract;
@@ -34,12 +37,12 @@
 
     procedure LoadDatFile(FileID: Integer; var Target: TStream); overload; virtual; abstract;
-    procedure LoadDatFile(FileID: Integer; var Target: TByteArray); overload; virtual; abstract;
+    procedure LoadDatFile(FileID: Integer; var Target: TByteData); overload; virtual; abstract;
     procedure UpdateDatFile(FileID: Integer; Src: TStream); overload; virtual; abstract;
-    procedure UpdateDatFile(FileID: Integer; Src: TByteArray); overload; virtual; abstract;
+    procedure UpdateDatFile(FileID: Integer; Src: TByteData); overload; virtual; abstract;
     procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
-    procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteArray); overload; virtual; abstract;
+    procedure LoadDatFilePart(FileID, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
     procedure LoadDatFilePart(FileID, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
     procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
-    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteArray); overload; virtual; abstract;
+    procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
     procedure UpdateDatFilePart(FileID, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
 
@@ -48,33 +51,20 @@
 
     procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; virtual; abstract;
-    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteArray); overload; virtual; abstract;
+    procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TByteData); overload; virtual; abstract;
     procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TStream); overload; virtual; abstract;
-    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TByteArray); overload; virtual; abstract;
+    procedure UpdateRawFile(FileID, DatOffset, Size: Integer; Src: TByteData); overload; virtual; abstract;
     procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TStream); overload; virtual; abstract;
-    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteArray); overload; virtual; abstract;
+    procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; var Target: TByteData); overload; virtual; abstract;
     procedure LoadRawFilePart(FileID, DatOffset, Offset, Size: Integer; Target: Pointer); overload; virtual; abstract;
     procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream); overload; virtual; abstract;
-    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteArray); overload; virtual; abstract;
+    procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TByteData); overload; virtual; abstract;
     procedure UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: Pointer); overload; virtual; abstract;
 
     function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TStream): Integer; overload; virtual; abstract;
-    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteArray): Integer; overload; virtual; abstract;
+    function AppendRawFile(LocSep: Boolean; Size: Integer; Src: TByteData): Integer; overload; virtual; abstract;
     function AppendRawFile(LocSep: Boolean; Size: Integer; Src: Pointer): Integer; overload; virtual; abstract;
   published
   end;
 
-
-
-
-
-{
-var
-  DataConnections: array of TOniData;
-
-function CreateDataConnection(filename: String; backend: Integer): TOniData;
-function ConnectionExists(filename: String): TOniData;
-procedure CloseDataConnection(connection: TOniData);
-function GetEmptyFileInfo: TFileInfo;
-}
 
 
@@ -158,4 +148,8 @@
 
 
+procedure TDataAccess.SetDataOS(DataOS: TDataOS);
+begin
+  raise ENotImplemented.Create('TDataAccess.SetDataOS: TBD!');
+end;
 
 end.
