KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Валентин Озеров, "Советы по Delphi. Версия 1.4.3 от 1.1.2001" бесплатно, без регистрации.
Перейти на страницу:

 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.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*