Рейтинговые книги
Читем онлайн Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 39 40 41 42 43 44 45 46 47 ... 123

 FMaxFileHandles : Integer;

 FNetFileDir : String;

 FTableLevel : String;

 FBlockSize : Integer;

 FDefaultDriver : String;

 FStrictIntegrity : Boolean;

 FAutoODBC : Boolean;

 procedure Init;

 procedure SetLocalShare(Value : Boolean);

 procedure SetMinBufSize(Value : Integer);

 procedure SetMaxBufSize(Value : Integer);

 procedure SetSystemLangDriver(Value : String);

 procedure SetParadoxLangDriver(Value : String);

 procedure SetMaxFileHandles(Value : Integer);

 procedure SetNetFileDir(Value : String);

 procedure SetTableLevel(Value : String);

 procedure SetBlockSize(Value : Integer);

 procedure SetDefaultDriver(Value : String);

 procedure SetAutoODBC(Value : Boolean);

 procedure SetStrictIntegrity(Value : Boolean);

 procedure UpdateCFGFile(path, item, value : string);

protected

public

 constructor Create(AOwner: TComponent); override;

 destructor Destroy; override;

published

 property LocalShare : Boolean read FLocalShare write SetLocalShare;

 property MinBufSize : Integer read FMinBufSize write SetMinBufSize;

 property MaxBufSize : Integer read FMaxBufSize write SetMaxBufSize;

 property SystemLangDriver : String read FSystemLangDriver write SetSystemLangDriver;

 property ParadoxLangDriver : String read FParadoxLangDriver write SetParadoxLangDriver;

 property MaxFileHandles : Integer read FMaxFileHandles write SetMaxFileHandles;

 property NetFileDir : String read FNetFileDir write SetNetFileDir;

 property TableLevel : String read FTableLevel write SetTableLevel;

 property BlockSize : Integer read FBlockSize write SetBlockSize;

 property DefaultDriver : string read FDefaultDriver write SetDefaultDriver;

 property AutoODBC : Boolean read FAutoODBC write SetAutoODBC;

 property StrictIntegrity : Boolean read FStrictIntegrity write SetStrictIntegrity;

end;

procedure Register;

implementation

function StrToBoolean(Value : string) : Boolean;

begin

 if (UpperCase(Value) = 'TRUE') or (UpperCase(Value) = 'ON') or (UpperCase(Value) = 'YES') or (UpperCase(Value) = '.T.' ) then Result := True

 else Result := False;

end;

function BooleanToStr(Value : Boolean) : String;

begin

 if Value then Result := 'TRUE'

 else Result := 'FALSE';

end;

procedure Register;

begin

 RegisterComponents('Data Access', [TBDEConfig]);

end;

procedure TBDEConfig.Init;

var

 h: hDBICur;

 pCfgDes: pCFGDesc;

 n, v : string;

begin

 Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent,'SYSTEMINIT', h));

 GetMem(pCfgDes, sizeof(CFGDesc));

 try

  FillChar(pCfgDes^, sizeof(CFGDesc), #0);

  while (DbiGetNextRecord(h, dbiWRITELOCK, pCfgDes, nil) = DBIERR_NONE) do begin

   n := StrPas(pCfgDes^.szNodeName);

   v := StrPas(pCfgDes^.szValue);

   if n = 'LOCAL SHARE' then FLocalShare := StrToBoolean(v)

   else if n = 'MINBUFSIZE' then FMinBufSize := StrToInt(v)

   else if n = 'MAXBUFSIZE' then FMaxBufSize := StrToInt(v)

   else if n = 'MAXFILEHANDLES' then FMaxFileHandles := StrToInt(v)

   else if n = 'LANGDRIVER' then FSystemLangDriver := v

   else if n = 'AUTO ODBC' then FAutoODBC := StrToBoolean(v)

   else if n = 'DEFAULT DRIVER' then FDefaultDriver := v;

  end;

  if (h <> nil) then DbiCloseCursor(h);

  Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent,'DRIVERSPARADOXINIT', h));

  FillChar(pCfgDes^, sizeof(CFGDesc), #0);

  while (DbiGetNextRecord(h, dbiWRITELOCK, pCfgDes, nil) = DBIERR_NONE) do begin

   n := StrPas(pCfgDes^.szNodeName);

   v := StrPas(pCfgDes^.szValue);

   if n = 'NET DIR' then FNetFileDir := v

   else if n = 'LANGDRIVER' then FParadoxLangDriver := v;

  end;

  if (h <> nil) then DbiCloseCursor(h);

  Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent, 'DRIVERSPARADOXTABLE CREATE', h));

  FillChar(pCfgDes^, sizeof(CFGDesc), #0);

  while (DbiGetNextRecord(h, dbiWRITELOCK, pCfgDes, nil) = DBIERR_NONE) do begin

   n := StrPas(pCfgDes^.szNodeName);

   v := StrPas(pCfgDes^.szValue);

   if n = 'LEVEL' then FTableLevel := v

   else if n = 'BLOCK SIZE' then FBlockSize := StrToInt(v)

   else if n = 'STRICTINTEGRITY' then FStrictIntegrity := StrToBoolean(v);

  end;

 finally

  FreeMem(pCfgDes, sizeof(CFGDesc));

  if (h <> nil) then DbiCloseCursor(h);

 end;

end;

procedure TBDEConfig.SetLocalShare(Value : Boolean);

begin

 UpdateCfgFile('SYSTEMINIT', 'LOCAL SHARE', BooleanToStr(Value));

 FLocalShare := Value;

end;

procedure TBDEConfig.SetMinBufSize(Value : Integer);

begin

UpdateCfgFile('SYSTEMINIT', 'MINBUFSIZE', IntToStr(Value));

 FMinBufSize := Value;

end;

procedure TBDEConfig.SetMaxBufSize(Value : Integer);

begin

 UpdateCfgFile('SYSTEMINIT', 'MAXBUFSIZE', IntToStr(Value));

 FMaxBufSize := Value;

end;

procedure TBDEConfig.SetSystemLangDriver(Value : String);

begin

 UpdateCfgFile('SYSTEMINIT', 'LANGDRIVER', Value);

 FSystemLangDriver := Value;

end;

procedure TBDEConfig.SetParadoxLangDriver(Value : String);

begin

 UpdateCfgFile('DRIVERSPARADOXINIT', 'LANGDRIVER', Value);

 FParadoxLangDriver := Value;

end;

procedure TBDEConfig.SetMaxFileHandles(Value : Integer);

begin

 UpdateCfgFile('SYSTEMINIT', 'MAXFILEHANDLES', IntToStr(Value));

 FMaxFileHandles := Value;

end;

procedure TBDEConfig.SetNetFileDir(Value : String);

begin

 UpdateCfgFile('DRIVERSPARADOXINIT', 'NET DIR', Value);

 FNetFileDir := Value;

end;

procedure TBDEConfig.SetTableLevel(Value : String);

begin

 UpdateCfgFile('DRIVERSPARADOXTABLE CREATE', 'LEVEL', Value);

 FTableLevel := Value;

end;

procedure TBDEConfig.SetBlockSize(Value : Integer);

begin

 UpdateCfgFile('DRIVERSPARADOXTABLE CREATE', 'BLOCK SIZE', IntToStr(Value));

 FBlockSize := Value;

end;

procedure TBDEConfig.SetStrictIntegrity(Value : Boolean);

begin

 UpdateCfgFile('DRIVERSPARADOXTABLE CREATE', 'STRICTINTEGRITY', BooleanToStr(Value));

 FStrictIntegrity := Value;

end;

procedure TBDEConfig.SetDefaultDriver(Value : String);

begin

 UpdateCfgFile('SYSTEMINIT', 'DEFAULT DRIVER', Value);

 FDefaultDriver := Value;

end;

procedure TBDEConfig.SetAutoODBC(Value : Boolean);

begin

 UpdateCfgFile('SYSTEMINIT', 'AUTO ODBC', BooleanToStr(Value));

 FAutoODBC := Value;

end;

procedure TBDEConfig.UpdateCFGFile;

var

 h : hDbiCur;

 pCfgDes: pCFGDesc;

 pPath : array[0..127] of char;

begin

 StrPCopy(pPath,Path);

 Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent, pPath, h));

 GetMem(pCfgDes, sizeof(CFGDesc));

 try

  FillChar(pCfgDes^, sizeof(CFGDesc), #0);

  while (DbiGetNextRecord(h, dbiWRITELOCK, pCfgDes, nil) = DBIERR_NONE) do begin

   if StrPas(pCfgDes^.szNodeName) = item then begin

    StrPCopy(pCfgDes^.szValue, value);

    Check(DbiModifyRecord(h, pCfgDes, True));

   end;

  end;

 finally

  FreeMem(pCfgDes, sizeof(CFGDesc));

  if (h <> nil) then DbiCloseCursor(h);

 end;

end;

constructor TBDEConfig.Create(AOwner: TComponent);

begin

 inherited Create(AOwner);

 Init;

end;

destructor TBDEConfig.Destroy;

begin

 inherited Destroy;

end;

end.

1 ... 39 40 41 42 43 44 45 46 47 ... 123
На этой странице вы можете бесплатно читать книгу Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров бесплатно.

Оставить комментарий