Arquivo .INI
Olá a todos
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:
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--
Curtidas 0
Respostas
Orc
08/09/2008
vai um exemplo ai , crie um arquivo ini com 2 variaveis servidor e caminho do banco deixe padrão a senha do banco e tudo bem é so sempre uqe entrar na aplicação ler o arquivo ini ai ele ja conecta automaticamente com obanco de dados
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
Fabiano Góes
08/09/2008
qual a camada de acesso que você está usando???
se for DBExpress você pode criar um arquivo ini como esse:
coloque o arquivo ini no diretório do sistema, ai no OnCreate do seu programa você faz a carga do arquivo ini:
agora, se não estiver usando DBExpress e estiver usando por exemplo IBX, você cria um ini mais simple tipo:
no OnCreate você faz a carga:
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!!!
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
--lh-pim--
08/09/2008
estou usando DBExpress, e fiz exatamente do modo como me descreveu, não mudei nada nas configurações do arquivo .ini, apenas no evento Oncreate que mudei. deu erro no banco...
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á
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
Fabiano Góes
08/09/2008
[quote:62f7f259f3=´--LH-PIM--´]estou usando DBExpress, e fiz exatamente do modo como me descreveu, não mudei nada nas configurações do arquivo .ini, apenas no evento Oncreate que mudei. deu erro no banco...
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
exemplo de como usar:
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´
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
--lh-pim--
08/09/2008
Olá,novamente com problemas... ´/
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á
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
Paullsoftware
08/09/2008
Que camada de acesso está usando? Tecnologia, Componentes, Etc... assim fica melhor de te ajudar...
Como já mensionaram acima, se for DbExpress use a função abaixo:
espero ter ajudado! :wink:
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