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

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

Читать бесплатно Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001. Жанр: Программирование издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

 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.

Перейти на страницу:

Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы

Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


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