Ir para conteúdo

Featured Replies

Postado
  • 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

  • 2 months later...
Postado

Desculpa se eu to revivendo o tópico, mas encontrei um problema :(

Quando eu vo escrever no arquivo *.ini ele da erro e aparece:

Sem%20t%C3%ADtulo.png

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

  • 10 months later...

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo