Fórum Configurar BDE em tempo de execução #149648

25/03/2003

0

Gostaria de saber se é possível configurar as propriedades do paradox na BDE como o NetDir, e na guia System/Init, o Local Share, etc. Em tempo de execução.
Com o TSession, consigo só configurar os aliases.

Desde já agradeço.


Anonymous

Anonymous

Responder

Posts

25/03/2003

Carnette

Gostaria de saber se é possível configurar as propriedades do paradox na BDE como o NetDir, e na guia System/Init, o Local Share, etc. Em tempo de execução. Com o TSession, consigo só configurar os aliases. Desde já agradeço.


Alterando o NetDir via programação:
Muitas vezes precisamos alterar o NetDir do BDE para que nossas aplicações funcionem corretamente. E com poucas linhas de código você poderá deixar para que sua própria aplicação faça isso.

Abaixo está uma rotina para alterar o NetDir de acordo com o drive informado como parâmetro:

uses BDE; // não esqueça de incluir esta unit

// ChangeNetDir
procedure ChangeNetDir(Drive: Char);
var
hCur: hDBICur;
Config: CFGDesc;
Cont: Boolean;
begin
if DbiInit(nil) = DBIERR_NONE then
begin
hCur := nil;
if DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPersistent,
´\DRIVERS\PARADOX\INIT´, hCur) = DBIERR_NONE then
begin
if DbiSetToBegin(hCur) = DBIERR_NONE then
begin
Cont := True;
while Cont do
begin
if (DbiGetNextRecord(hCur, dbiWRITELOCK, @Config, nil)
<> DBIERR_NONE) then
Cont := False
else if StrIComp(Config.szNodeName, ´NET DIR´) = 0 then
begin
StrPCopy(Config.szValue, Drive + ´:\´);
DbiModifyRecord(hCur, @Config, True);
Cont := False
end;
end;
end;
end;
DbiExit();
end;
end;
O uso deste procedimento pode ser assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
ChangeNetDir(´H´);
end;


Responder

Gostei + 0

25/03/2003

Carnette

Alterar o LOCAL SHARE via programação
No WIN 95 você pode alterar diretamente a chave do registro que seta esta opção. Fica em HKEY_LOCAL_MACHINE > Software > ... LOCAL SHARE ´TRUE´ (Pesquise com o regedit). Já no WIN 3.xxx eu também gostaria de saber.



Contribuição
O Willian Vieira dos Santos enviou esse procedimento que serve para realizar esses tipos de modificações

Procedure ModifyBDE(Path,Chave,Valor:String);
var ParamList: TParamList;
Lista:TStringList;
cfgMode:TConfigMode;
i:Integer;
begin
Lista:=TStringList.Create;
//Recupera Lista de Configurações
Session.GetConfigParams(Path,´´,Lista);
//Verifica na lista, onde a chave modificada se encontra
For i:=0 to Lista.Count-1 do
If Pos(UpperCase(Chave),UpperCase(Lista[i]))<>0 Then
Lista[i]:=UpperCase(Chave)+´=´+Valor;
//Salva o atual modo de configuração da variável de sessão
cfgMode:=Session.ConfigMode;
//Coloca em modo de alteração
Session.ConfigMode:=cmPersistent;
//Cria lista de parâmetros
ParamList := TParamList.Create(Lista);
//Chama API do BDE para modificar as configurações
Check(DbiCfgModifyRecord(nil, PChar(Path), ParamList.FieldCount,
PFLDDesc(ParamList.FieldDescs), ParamList.Buffer));
//Recupera o modo de configuração da variável de sessão
Session.ConfigMode:=cfgMode;
//Salva as configurações da sessão
Session.SaveConfigFile;
ParamList.Free;
Lista.Free;
End;


//Alguns exemplos de chamada da função para modificar o valor no BDE
//Nota: certas chaves possuem alguma diferença quanto ao Path no BDE
ModifyBDE(´\System\FORMATS\NUMBER´,´DECIMALSEPARATOR´,´,´);
ModifyBDE(´\System\Init´,´Local Share´,´TRUE´);
ModifyBDE(´\Drivers\Paradox\Init´,´Net Dir´,´F:\´);
OBSERVAÇÃO: Após utilizar a função é necessário reiniciar o sistema, talvez por causa da variável de sessão. Um teste que eu ainda não fiz, foi dar um close/open na sessão para não ter que reiniciar o sistema. Com certeza, as Query´s e Table´s serão fechadas necessitando reabri-las.

Enviada Por:
willian@microdata-online.com.br
Willian Vieira dos Santos
Analista/Programador
Microdata S/C Ltda.


Responder

Gostei + 0

25/03/2003

Anonymous

Muito obrigado! Isso vai me ajudar bastante.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar