VDLR Postado Novembro 20, 2006 Denunciar Share Postado Novembro 20, 2006 Pessoal peguei um artigo na internet para conectar o sistema através do INI, e tentei adaptar ao meu sistema, só que estou recebendo diversos erros que não seu como corrigir, alguém pode me ajudar.Os códigos são estes:procedure Gravar_Configuracao(Url, Usr, pws : String); var Banco : TIniFile; Begin Try SetCurrentDir(ExtractFilePath(Application.ExeName)); Banco := TIniFile.Create(GetCurrentDir + '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB.ini'); Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL); Banco.WriteString('DATABASE','SYSDBA',USR); Banco.WriteString('DATABASE','masterkey',PWS); Finnaly Banco.Free; End; End; procedure Ler_Configuracao(var Url: String; var Usr: String; var pws: String); Begin Try Banco := TIniFile.create(GetCurrentDir+'\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB.ini'); URL := Banco.WriteString('DATABASE','\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB',URL); USR := Banco.WriteString('DATABASE','SYSDBA',USR); PWS := Banco.WriteString('DATABASE','masterkey',PWS); Finnaly Banco.Free; End; End; procedure TFRlembrdoc.FormCreate(Sender: TObject); begin SetCurrentDir(ExtractFilePath(Application.ExeName)); IBContrSMS.Close; Ler_Configuracao(Url,Usr,Pwd); IBContrSMS.Params.Add('user_name='+USR); IBContrSMS.params.add('password ='+PWD); IBContrSMS.DatabaseName := Url; IBContrSMS.Open; end;Os erros são este:[Error] LembrDoc.pas(114): Undeclared identifier: 'Finnaly'[Error] LembrDoc.pas(115): Missing operator or semicolon[Error] LembrDoc.pas(116): EXCEPT or FINALLY expected[Error] LembrDoc.pas(122): Undeclared identifier: 'Banco'[Error] LembrDoc.pas(123): Missing operator or semicolon[Error] LembrDoc.pas(124): Missing operator or semicolon[Error] LembrDoc.pas(125): Missing operator or semicolon[Error] LembrDoc.pas(126): Undeclared identifier: 'Finnaly'[Error] LembrDoc.pas(127): Missing operator or semicolon[Error] LembrDoc.pas(128): EXCEPT or FINALLY expected[Error] LembrDoc.pas(244): Undeclared identifier: 'Url'[Error] LembrDoc.pas(244): Types of actual and formal var parameters must be identical[Fatal Error] LembreteDoc.dpr(5): Could not compile used unit 'LembrDoc.pas'AbraçoValdecir Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 VDLR Postado Dezembro 6, 2006 Autor Denunciar Share Postado Dezembro 6, 2006 Micheus tudo bem,Cara colocando estes componentes na caixa Expression IBContrSMS.Params[0] IBContrSMS.params[1] IBContrSMS.DatabaseName Recebo isto em Result'user_name=SYSDBA''password=masterkey''Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB'Parece que está certo. Porém copilando dá o erro, só funciona se eliminar as linhas desta procedure que é onde grava e lê o arquivo INIprocedure TFRlembrdoc.FormCreate(Sender: TObject); //Var url,usr,pws : String; begin // IBContrSMS.Connected:=True; // Gravar_Configuracao(Url,Usr,pws); // SetCurrentDir(ExtractFilePath(Application.ExeName)); // IBContrSMS.Close; // Ler_Configuracao(Url,Usr,pws); // IBContrSMS.Params.Add('user_name='+Usr); // IBContrSMS.params.add('password='+PWS); // IBContrSMS.DatabaseName :='Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB'+URL; // IBContrSMS.Open; end;Sei lá tem alguma idéiaAbraços Valdecir :( Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Dezembro 6, 2006 Denunciar Share Postado Dezembro 6, 2006 Porém copilando dá o erro, só funciona se eliminar as linhas desta procedure que é onde grava e lê o arquivo INIprocedure TFRlembrdoc.FormCreate(Sender: TObject); //Var url,usr,pws : String; begin // IBContrSMS.Connected:=True; // Gravar_Configuracao(Url,Usr,pws); // SetCurrentDir(ExtractFilePath(Application.ExeName)); // IBContrSMS.Close; // Ler_Configuracao(Url,Usr,pws); // IBContrSMS.Params.Add('user_name='+Usr); // IBContrSMS.params.add('password='+PWS); // IBContrSMS.DatabaseName :='Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB'+URL; // IBContrSMS.Open; end; Sei lá tem alguma idéiaVDLR, vamos sincronizar as idéias. - você está com um erro de compilação? Qual? - esta linha com certeza resulta em problemas: IBContrSMS.DatabaseName :='Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDB'+URL; Note que você está concatenando o valor de URL, lido do arquivo ini com o caminho fixo (texto). Deveria ficar deste modo: IBContrSMS.DatabaseName := URL; - em run-time você está adicionando linhas a Params, sendo que se você colocou algo nesta propriedade em design-time poderá ter erros também. Então o correto é que você limpe seu conteúdo antes de prenchê-lo: IBContrSMS.Params.Clear; Segue uma sugestão de como esta parte de leitura e gravção poderiam ficar:procedure TFRlembrdoc.FormCreate(Sender: TObject); Var url,usr,pws : String; begin Ler_Configuracao(Url,Usr,pws); IBContrSMS.Params.Clear; // *** limpa qualquer informação que você tenha colocado em design-time IBContrSMS.Params.Add('user_name='+Usr); IBContrSMS.params.Add('password='+PWS); IBContrSMS.DatabaseName := URL; IBContrSMS.Open; end; procedure TFRlembrdoc.Gravar_Configuracao(Url, Usr, pws : String); var BDSMS :TIniFile; begin BDSMS := TIniFile.Create(ExtractFilePath(Application.ExeName) + '\Database.ini'); try BDSMS.WriteString('Database', 'Local', URL); BDSMS.WriteString('Database', 'user_name', USR); BDSMS.WriteString('Database', 'password', PWS); finally BDSMS.Free; end; end; procedure TFRlembrdoc.Ler_Configuracao(var Url, Usr, Pws: String); var BDSMS :TIniFile; IniFile :String; begin // inicializa com os valores default URL := '\\Phoenix2\C\VDL - Controle SMS\BDados\BDSMS.GDB'; USR := 'SYSDBA'; PWS := 'masterkey'; // monta nome do arquivo ini com sua localização (path) IniFile := ExtractFilePath(Application.ExeName) + '\Database.ini'; if FileExists(IniFile) then begin BDSMS := TIniFile.Create(IniFile); try URL := BDSMS.ReadString('Database', 'Local', URL); USR := BDSMS.ReadString('Database', 'user_name', USR); PWS := BDSMS.ReadString('Database', 'password', PWS); finally BDSMS.Free; end; end else // isso provavelmente ocorrerar apenas uma única vez Gravar_Configuracao(Url, Usr, pws); end;Espero não ter errado nada ;) Gostaria de alertá-lo para o fato de que não é prática correta armazenar, desta forma, as informações do usuário (usuário e senha).Se você pretende, manter apenas o uso do usuário e senha padrão (SYSDBA e Masterkey), ou seja, não haverá tela de login e controles de acesso, seria conveniente que você os definisse apenas em design-time. Apenas o servidor/banco (url) poderia ser armazenado no arquivo ini sem maiores restrições.Se você levar em consideração este último comentário, deverão ser feitos os respectivos ajustes no código de gravação e leitura do aquivo ini.[]sp.s. No post que lhe falei sobre o break-point, esqueci de lhe dizer como continuar a execução. Seria através das teclas: -> F9 = executar até termino do programa ou próximo break; -> F8 = execução linha após linha, sendo que na chamada à procedimentos este são executados diretamente -> F7 = execução linha após linha, sendo que na chamada à procedimentos o programa desvia para dentro dele de modo "monitorar" a execução de cada linha existente;mais ou menos isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 VDLR Postado Dezembro 8, 2006 Autor Denunciar Share Postado Dezembro 8, 2006 Micheus desculpe, mas só agora vi seu post, estou meio na correria, mas vou fazer isto e te falo beleza.Abraços Valdecir Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 VDLR Postado Dezembro 8, 2006 Autor Denunciar Share Postado Dezembro 8, 2006 Micheus fiz alguns ajustes e funcionou, o Arq INI ficou assim.[Database]DatabaseName=Phoenix2:\VDLR - Controle SMS\BDados\BDSMS.GDBuser_name=SYSDBApassword=masterkeyPorém com este seu comentário que você fez, qualquer pessoa que abrir o arquivo INI vai saber qual é o usuário e senha do banco.Gostaria de alertá-lo para o fato de que não é prática correta armazenar, desta forma, as informações do usuário (usuário e senha).Se você pretende, manter apenas o uso do usuário e senha padrão (SYSDBA e Masterkey), ou seja, não haverá tela de login e controles de acesso, seria conveniente que você os definisse apenas em design-time. Apenas o servidor/banco (url) poderia ser armazenado no arquivo ini sem maiores restrições.Se você levar em consideração este último comentário, deverão ser feitos os respectivos ajustes no código de gravação e leitura do aquivo ini.Cara já pensei, mas não achei como mudar isto porque quando o INI fica desta forma[Database]DatabaseName=user_name=password=Não funcionava dava aqueles erros, você vê alguma alternativa.Abraços Valdecir ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Dezembro 8, 2006 Denunciar Share Postado Dezembro 8, 2006 opadesculpa intrometer, mas VDLR, você não entendeu o esquemade arquivos INI, por isso você está apanhando...sobre o comentário do Micheus, se você vai manter o usuárioe senha padrão do IB, "SYSDBA"/"MasterKey" então pra quearmazenar no arquivo .ini estes valores?sendo assim, por exemplo, no seu código, na rotina em quevocê faz a conexão com o banco, vamos supor que você estejafazendovarszUser, szPass: String;begin{...}szUser := ini.ReadString('Database', 'user_name', 'SYSDBA');szPass := ini.ReadString('Database', 'password', 'masterkey');{...}o que o Micheus quis dizer é que como você vai manter padrãoentão esquece de gravar e ler no .ini isso, seria mais fácilszUser := 'sysdba';szPass := 'masterkey';ou melhor ainda, já joga direto sem nem usar variáveis porquevariáveis como o próprio nome diz é quando varia seu conteúdoe neste caso não vai...jogando direto baseado no que vi no tópico seriaIBContrSMS.Params.Add('user_name=SYSDBA'); IBContrSMS.params.Add('password=masterkey'); Cara já pensei, mas não achei como mudar isto porque quando o INI fica desta formaFica desta forma porque você está gravando desta forma, então é só tirar o código exemplo //BDSMS.WriteString('Database', 'user_name', USR); //BDSMS.WriteString('Database', 'password', PWS);procure entender a estrutura de arquivos .ini que voce vai pegarfácil fácil...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Dezembro 29, 2006 Denunciar Share Postado Dezembro 29, 2006 Povo, pelo que consegui resolver no meu caso tem que ver em que diretório o arquivo INI está ficando... porque na ânsia de resolver o problema a gente coloca os arquivos exe e ini em qualquer lugar .. .mas eles tem que ficar onde ficou definido no código fonte... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
VDLR
Pessoal peguei um artigo na internet para conectar o sistema através do INI, e tentei adaptar ao meu sistema, só que estou recebendo diversos erros que não seu como corrigir, alguém pode me ajudar.
Os códigos são estes:
Os erros são este:
[Error] LembrDoc.pas(114): Undeclared identifier: 'Finnaly'
[Error] LembrDoc.pas(115): Missing operator or semicolon
[Error] LembrDoc.pas(116): EXCEPT or FINALLY expected
[Error] LembrDoc.pas(122): Undeclared identifier: 'Banco'
[Error] LembrDoc.pas(123): Missing operator or semicolon
[Error] LembrDoc.pas(124): Missing operator or semicolon
[Error] LembrDoc.pas(125): Missing operator or semicolon
[Error] LembrDoc.pas(126): Undeclared identifier: 'Finnaly'
[Error] LembrDoc.pas(127): Missing operator or semicolon
[Error] LembrDoc.pas(128): EXCEPT or FINALLY expected
[Error] LembrDoc.pas(244): Undeclared identifier: 'Url'
[Error] LembrDoc.pas(244): Types of actual and formal var parameters must be identical
[Fatal Error] LembreteDoc.dpr(5): Could not compile used unit 'LembrDoc.pas'
Abraço
Valdecir
Link para o comentário
Compartilhar em outros sites
31 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.