Fórum Arquivo .INI #363598
08/09/2008
0
bem,vamos a minha duvida
tenho uma aplicação em delphi 7 usando interbase com o ibexpert,
gostaria de saber como eu faço para abrir minha aplicação em outro computador sem ter que ficar mudando o caminho do banco toda hora
ouvi falar que eu preciso criar um arquivo .ini,que criaria tabelas em branco,ou algo assim para que eu não necessitace mudar o caminho e tal...
alguém sabe como faço isso
(não quero abrir o arquivo .ini em nenhum botão,quero que abra quando eu abrir o projeto,em qualquer máquina)
agradeço desdejá a ajuda :wink:
--lh-pim--
Curtir tópico
+ 0Posts
09/09/2008
Orc
Inclua a unit IniFiles na clausula uses do seu form. Procedure TForm1.GravaIni( Numero : Longint ; Texto : String ; Condicao : Boolean); var ArqIni : TIniFile; begin ArqIni := TIniFile.Create(´c:\windows\temp\Teste.Ini´); Try ArqIni.WriteInteger(´Dados´, ´Numero´, Numero); ArqIni.WriteString(´Dados´, ´Texto´, Texto); ArqIni.WriteBool(´Dados´, ´Condição´, Condicao); Finally ArqIni.Free; end; end; Procedure TForm1.LeIni( Var Numero : Longint ; Var Texto : String ; Var Condicao : Boolean); var ArqIni : tIniFile; begin ArqIni := tIniFile.Create(´c:\windows\temp\Teste.Ini´); Try Numero := ArqIni.ReadInteger(´Dados´, ´Numero´, Numero ); Texto := ArqIni.ReadString(´Dados´, ´Texto´, Texto ); Condicao := ArqIni.ReadBool(´Dados´, ´Condição´, Condicao ); Finally ArqIni.Free; end; end; Utilize as procedures assim: procedure TForm1.Button1Click(Sender: TObject); begin GravaIni(1234,´TESTE´,True); end; procedure TForm1.Button2Click(Sender: TObject); var N: Integer; T: String; C: Boolean; begin LeIni(N,T,C); Showmessage(IntToStr(N)+´ ´+T); end;
Gostei + 0
09/09/2008
Fabiano Góes
se for DBExpress você pode criar um arquivo ini como esse:
[Connect] DriverName=Interbase Database=192.168.1.100:C:\Data\Seubanco.gdb RoleName=RoleName User_Name=sysdba Password=masterkey ServerCharSet= SQLDialect=3 BlobSize=-1 CommitRetain=False WaitOnLocks=True ErrorResourceFile= LocaleCode=0000 Interbase TransIsolation=ReadCommited Trim Char=False
coloque o arquivo ini no diretório do sistema, ai no OnCreate do seu programa você faz a carga do arquivo ini:
procedure TForm1.FormCreate(Sender: TObject); begin SQLConnection1.Close; SQLConnection1.LoadParamsFromIniFile(ExtractFilePath(Application.ExeName) + ´Connect.ini´); SQLConnection1.Open; end;
agora, se não estiver usando DBExpress e estiver usando por exemplo IBX, você cria um ini mais simple tipo:
[connect] Server=192.168.1.102 Database=C:\Arquivos de programas\Arquivos comuns\Borland Shared\Data\EMPLOYEE.GDB
no OnCreate você faz a carga:
procedure TForm1.FormCreate(Sender: TObject); var INI: TIniFile; begin INI := TIniFile.Create(ExtractFilePath(Application.ExeName)+´Connect.ini´); try IBDatabase1.Close; IBDatabase1.DatabaseName := INI.ReadString(´Connect´, ´Server´, ´´) + ´:´ + INI.ReadString(´Connect´, ´Database´, ´´); IBDatabase1.Open; finally INI.free; end; end;
assim você não vai precisar ficar mudando o banco de lugar, ou ter que reconpilar o programa, basta editar o arquivo ini.
espero ter ajudado.
um abraço!!!
Gostei + 0
09/09/2008
--lh-pim--
não sei se estou fazendo errado,se devia mudar algo do que escreveu no arquivo .ini?? ou se deixo do jeito como escreveu??
obrigado pela ajuda
e agradeço aos próximos posts desde já
Gostei + 0
09/09/2008
Fabiano Góes
não sei se estou fazendo errado,se devia mudar algo do que escreveu no arquivo .ini?? ou se deixo do jeito como escreveu??
obrigado pela ajuda
e agradeço aos próximos posts desde já[/quote:62f7f259f3]
criei um método pra você usar, tenta ai
function OpenConnection(oConnect: TSQLConnection; sFileIni: String): Boolean; begin with oConnect do begin Connected := False; ConnectionName := ´Connect´; DriverName := ´Interbase´; GetDriverFunc := ´getSQLDriverINTERBASE´; KeepConnection := False; LibraryName := ´dbexpint.dll´; LoginPrompt := False; VendorLib := ´fbclient.dll´; LoadParamsFromIniFile(sFileIni); try Connected := True; Result := True; except Result := False; raise Exception.Create(´Erro na conexão com o banco de dados´); end; end; end;
exemplo de como usar:
if OpenConnection(SQLConnection1, ExtractFilePath(Application.ExeName) + ´Connect.ini´) then ShowMessage(´Connect OK´);
O primeiro parametro do método você passa seu objeto SQLConnetion.
o segundo parametro do método você o caminho do seu arquivo ini
assim o sistema espera que exista no diretório do sistema um arquivo ini chamado ´Connect.ini´
ExtractFilePath(Application.ExeName) + ´Connect.ini´
Gostei + 0
14/09/2008
--lh-pim--
veja só,estou executando a minha aplicação e quando faço isso ela diz a mensagem:
´missing driver property´ e tbm apareceu a seguinte mensagem:
´unavaliable database´
por que?
estou com muita duvida sobre isso,só queria executar o programa sem ficar mudando o banco de lugar toda a hora... ´/
se puderem ajudar agradeço desde já
Gostei + 0
14/09/2008
Paullsoftware
Como já mensionaram acima, se for DbExpress use a função abaixo:
procedure LoadConnection(SqlConn:TSQLConnection); var ArqConf : string; begin ArqConf := ExtractFilePath(ParamStr(0)) + ´Config.ini´; PathTemp := ExtractFileDir(ParamStr(0))+´\BANCO.FDB´;//aqui vai o nome do banco de dados que uso como padrão, mais pode alterar depois que ele criar o arquivo ini em sua aplicação with SqlConn do begin if FileExists(ArqConf) then begin try Close; Params.LoadFromFile(ArqConf); Open; PreparaData(); except on E: Exception do begin MessageDlg(´Erro ao conectar com o banco de dados! ´+#10+E.Message,mtError,[mbOK],0); end; end; end else begin Params.Values[´DataBase´] := PathTemp; Params.Insert(0,´[´+SqlConn.ConnectionName+´]´); Params.SaveToFile(ArqConf); MessageDlg(´Não foi possível encontrar o arquivo de configuração, o sistema vai criar um pré-configurado para acessa a BASE DE DADOS no endereço: ´+pChar(PathTemp)+´ tente abrir novamente o sistema, se o problema persistir entre em contato com desenvolvedor´,mtError,[mbOK],0); Application.Terminate; end; end; end; (* LoadConnection *)
espero ter ajudado! :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)