Postado Dezembro 16, 2010 14 anos Este é um post popular. {Manipulando arquivos de configuração .ini} O que é um arquivo INI ? Um arquivo INI é um arquivo texto usado para armazenar/fornecer configurações pessoais para sistemas/usuários ; Um arquivo INI é um arquivo com dados externo ao programa principal e esta formatado em : Secções(FileName) , Entradas e Valores. Como por exemplo: Eu quero que o usuário digite algo em um "EditBox" mas que o que ele digite fique guardado e sempre seja usado, então irei gravar o que ele digitou em um arquivo .ini (Chamado de arquivo de inicialização mas também pode ser chamado de configuração) e quando eu quizer usar o que o usuário digitou eu busco dentro do arquivo .ini. Funções Primeiramente em seu projeto do VB adicione um novo "Module" chamado "INIread.vb" e outro chamado "INIwrite.vb". (para criar um novo module, clique com botão direito no primeiro item da lista do Solution Explorer, Add > Module) Dentro do INIread.vb apague tudo e cole isso: Option Strict Off Option Explicit On Module INIread Public Function ReadIniValue(ByRef INIpath As String, ByRef KEY As String, ByRef Variable As String) As String Dim NF As Short Dim Temp As String Dim LcaseTemp As String Dim ReadyToRead As Boolean AssignVariables: NF = FreeFile ReadIniValue = "" KEY = "[" & LCase(KEY) & "]" Variable = LCase(Variable) EnsureFileExists: FileOpen(NF, INIpath, OpenMode.Binary) FileClose(NF) SetAttr(INIpath, FileAttribute.Archive) LoadFile: FileOpen(NF, INIpath, OpenMode.Input) While Not EOF(NF) Temp = LineInput(NF) LcaseTemp = LCase(Temp) If InStr(LcaseTemp, "[") <> 0 Then ReadyToRead = False If LcaseTemp = KEY Then ReadyToRead = True If InStr(LcaseTemp, "[") = 0 And ReadyToRead = True Then If InStr(LcaseTemp, Variable & "=") = 1 Then ReadIniValue = Mid(Temp, 1 + Len(Variable & "=")) FileClose(NF) : Exit Function End If End If End While FileClose(NF) End Function End Module E dentro do INIwrite.vb cole isso: Option Strict Off Option Explicit On Module INIwrite Public Function WriteIniValue(ByRef INIpath As String, ByRef PutKey As String, ByRef PutVariable As String, ByRef PutValue As String) As Object Dim Temp As String Dim LcaseTemp As String Dim ReadKey As String Dim ReadVariable As String Dim LOKEY As Short Dim HIKEY As Short Dim KEYLEN As Short Dim VAR As Short Dim VARENDOFLINE As Short Dim NF As Short Dim X As Short AssignVariables: NF = FreeFile ReadKey = vbCrLf & "[" & LCase(PutKey) & "]" & Chr(13) KEYLEN = Len(ReadKey) ReadVariable = Chr(10) & LCase(PutVariable) & "=" EnsureFileExists: FileOpen(NF, INIpath, OpenMode.Binary) FileClose(NF) SetAttr(INIpath, FileAttribute.Archive) LoadFile: FileOpen(NF, INIpath, OpenMode.Input) Temp = InputString(NF, LOF(NF)) Temp = vbCrLf & Temp & "[]" FileClose(NF) LcaseTemp = LCase(Temp) LogicMenu: LOKEY = InStr(LcaseTemp, ReadKey) If LOKEY = 0 Then GoTo AddKey HIKEY = InStr(LOKEY + KEYLEN, LcaseTemp, "[") VAR = InStr(LOKEY, LcaseTemp, ReadVariable) If VAR > HIKEY Or VAR < LOKEY Then GoTo AddVariable GoTo RenewVariable AddKey: Temp = Left(Temp, Len(Temp) - 2) Temp = Temp & vbCrLf & vbCrLf & "[" & PutKey & "]" & vbCrLf & PutVariable & "=" & PutValue GoTo TrimFinalString AddVariable: Temp = Left(Temp, Len(Temp) - 2) Temp = Left(Temp, LOKEY + KEYLEN) & PutVariable & "=" & PutValue & vbCrLf & Mid(Temp, LOKEY + KEYLEN + 1) GoTo TrimFinalString RenewVariable: Temp = Left(Temp, Len(Temp) - 2) VARENDOFLINE = InStr(VAR, Temp, Chr(13)) Temp = Left(Temp, VAR) & PutVariable & "=" & PutValue & Mid(Temp, VARENDOFLINE) GoTo TrimFinalString TrimFinalString: Temp = Mid(Temp, 2) Do Until InStr(Temp, vbCrLf & vbCrLf & vbCrLf) = 0 Temp = Replace(Temp, vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf) Loop Do Until Right(Temp, 1) > Chr(13) Temp = Left(Temp, Len(Temp) - 1) Loop Do Until Left(Temp, 1) > Chr(13) Temp = Mid(Temp, 2) Loop OutputAmendedINIFile: FileOpen(NF, INIpath, OpenMode.Output) PrintLine(NF, Temp) FileClose(NF) End Function End Module Pronto as funções agora estão funcionando em seu projeto. Aparecerá 2 warnings mas ignore. Como usar as funções? Vamos definir uma variável "File" que será o caminho do arquivo .ini. Dim File as String Agora vamos atribuir um valor para a variável file. File = "C:\teste.ini" E agora? Como escrever/gravar ou ler este arquivo? Para escrever/gravar: WriteIniValue(File, "Teste", "Valor1", "Oi") Código inteiro (Coloque em algum botão ou algo do tipo): Dim File as String File = "C:\teste.ini" WriteIniValue(File, "Teste", "Valor1", "Oi") O arquivo .ini após ele executar isso ficara assim: [Teste] Valor1=Oi Agora vamos ler e exibir o que está escrito no arquivo .ini (Coloque em algum botão ou algo do tipo) Dim Str as String Str = ReadIniValue(File, "Teste", "Valor1") MsgBox(Str) Com essas funções você pode criar várias idéias, use a sabedoria e crie idéias perfeitas com isto. "A esperança é o sonho do homem acordado." Aristóteles
Postado Dezembro 17, 2010 14 anos Cara, muito bom, muito bom mesmo! Eu precisava disso!! REP+ rena.to
Postado Março 7, 2011 14 anos Desculpa se eu to revivendo o tópico, mas encontrei um problema Quando eu vo escrever no arquivo *.ini ele da erro e aparece: O que pode ser? Tava funcionando normal, agora parou... Preciso urgente disso ---------------------------------------- EDITED Foi mal por reviver o tópico, apenas deletei o arquivo config.ini e agora está funcionando perfeitamente ¬¬' Tyx
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.