DEFININDO UM CAMINHO PADRAO NO SISTEMA

DANIKULL 09/02/2010 12:16:11
#333993
Pessoal, bom dia....

Estou com o seguinte problema.....

Uso uma dll para compactação via API onde acontece o seguinte problema:

Qando eu abro o aplicativo a 1º. vez ele pde para configurar o arquivo INI, então abre o commomdialog e selecia-se um diretório, então fica armazenado este diretório que selecinei na memoria, até ai tudo bem.
Quando eu fecho o aplicativo e reabro em seguida, ele perde esta referencia e indica como path o diretório onde está o executavel do VB (C:\Arquivos de programas\Microsoft Visual Studio\VB98).
Obs.: Para voltar na condição inicial eu tenho que abrir o form de configuração, abrir o commomdialog e selefcionar a pasta.

Pergunta:

Tem como e como eu faço para sempre quando o aplicativo iniciar, forçar que o path padrão seja aquele qe indiquiei na configuração do arquivo ini???

TECLA 09/02/2010 12:37:14
#334001
CommonDialog1.InitDir = [Ô]C:\Temp[Ô]
CommonDialog1.ShowOpen
SINKERTEC 09/02/2010 12:39:26
#334003

Pra ficar simples pra vc meu caro

Jogue isso na pasta path da aplicação

Será sempre a mesma pra vc
DANIKULL 09/02/2010 13:37:28
#334009
Citação:

:

CommonDialog1.InitDir = [Ô]C:Temp[Ô]
CommonDialog1.ShowOpen



Tecla boa tarde.

Na verdade este código não funciona da forma que preciso, porque: Qando eu uso o Open do CommandDialog o aplicativo armazena o path confirmado e salvo no arquivo INI, mais quando eu fecho o aplicativo o path se perde e o sistema passa a usar o path do Kernel do VB6 (C:\Arquivos de programas\Microsoft Visual Studio\VB98). Isto ocasiona um erro na aplicação. Para refazer o path corretamente tenho q abrir o configurador do arquivo INI clicar no botão de localizar pasta, e salvar o arquivo.

Citação:

:

Pra ficar simples pra vc meu caro

Jogue isso na pasta path da aplicação

Será sempre a mesma pra vc



Sinkertec, não entendi, colocar o que na pasta path da aplicação????

Obrigado pelas respostas....
MARCELO.TREZE 09/02/2010 14:17:19
#334015
Colega Vamos resolver seu problema, não use esta dlll, faça o seguinte

em um módulo cole:

[ô]
[ô] funções para escrever e ler arquivos ini
[ô]
Declare Function WritePrivateProfileString Lib [Ô]kernel32[Ô] Alias _
[Ô]WritePrivateProfileStringA[Ô] (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName _
As String) As Long
[ô]
Declare Function GetPrivateProfileString Lib [Ô]kernel32[Ô] Alias _
[Ô]GetPrivateProfileStringA[Ô] (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString _
As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
[ô]
Public Ret As String
[ô]
[ô] sub função para gravar um arquivo ini
[ô]
Public Sub WriteINI(FileName As String, Section As String, Key As String, Text As String)
WritePrivateProfileString Section, Key, Text, FileName
End Sub
[ô]
[ô] Função para ler um arquivo ini
[ô]
Public Function ReadINI(FileName As String, Section As String, Key As String)
Ret = Space$(255)
retLen = GetPrivateProfileString(Section, Key, [Ô][Ô], Ret, Len(Ret), FileName)
Ret = Left$(Ret, retLen)
ReadINI = Ret
End Function


agora no form principal de sua aplicação faça o seguinte no evento Load do Form.


Private Sub Form_Load()
Dim Caminho As String
Caminho = App.Path & [Ô]\config.ini[Ô]
If Dir(Caminho)=[Ô][Ô] Then
CommonDialog1.DialogTitle = [Ô]Procura origem...[Ô]
CommonDialog1.ShowOpen
WriteINI Caminho, [Ô]programa[Ô], [Ô]caminho[Ô], CommonDialog1..FileName
Else
AbrirADO
[txt-color=#007100][ô]ou
[ô]AbriDAO[/txt-color]
End If
End Sub

[ô] usando o DAO
Sub AbrirDAO()
Dim DB As DAO.Database
Dim caminho As String
caminho = ReadINI([Ô]c:\caminho.ini[Ô], [Ô]programa[Ô], [Ô]caminho[Ô])
Set DB = DBEngine.OpenDatabase(caminho, False, False)
DB.Close
End Sub

[ô] usando o ADO
Sub AbrirADO()
Dim CNN As New ADODB.Connection
caminho = ReadINI([Ô]c:\caminho.ini[Ô], [Ô]programa[Ô], [Ô]caminho[Ô])
CNN.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & caminho & [Ô];[Ô]
CNN.Close
End Sub


como funciona, o programa irá buscar o arquivo config.ini na pasta do seu programa, se nào achar ele vai gravar este arquivo, como o caminho do banco

e pronto

DANIKULL 09/02/2010 19:59:25
#334036
MARCELO-TREZE, boa noite.

Na verdade você também não entendeu minha dúvida. A dll que estou usando não faz ref. aonarquivo INI, para ler e escrever no arquino INI uso a mesma API que você está me indicando.

Agora a pouco percebi uma coisa curiosa. Minha dúvida foi gerada usando o Kernel do VBN6 via RunTime e não via executável, por isso gerei o executavel e coloquei em uma pasta no desktop, após executar o aplicativo normalmente este erro não acontece então o sistema funciona perfeitamente, conforme programado.

A DLL que citei é ad AZIP32.dll e a AUNZIP32.dll, para compactação e descompactação de arquivos.


Citação:

Obs.: Vou deixar o tópico aberto por mais dois dias para ver se alguem sabe, ja viu ou conhrce alguem que ja passou por um problema semelhante e conseguiu achar uma resposta positiva e satisfatória....




Tópico encerrado , respostas não são mais permitidas