Ir ao conteúdo
  • Cadastre-se
Fabricio MF

Problema com diretórios no delphi 7

Recommended Posts

Olá pessoal do Clube do Hardware!

Estou fazendo um programa no delphi 7, esse programa é um banco de dados que acessa dados de um banco de dados do access 2003. Minha aplicação foi feita com diretórios em que todas as pastas estão em C:, porém onde moro tem um pc que o HD dele é I:, então quando testei o programa ele deu erro porque ele não achou o Banco de Dados (porque o programa foi configurado para C:.).

Então eu peço a ajuda de vocês para saber se tem como fazer o programa procurar qual o disco rigido (C:,I:,D:,...) e fazer com que a conexão do banco de dados (no meu caso é o ADO Conection) use o diretório correto.

Desde Já fico grato.^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Declare na parte Public do form:

Function drive : String;

E sua respectiva declaração posterior:

Function TForm1.drive : String;

Var

Buffer : Array[0..144] of Char;

Begin

GetSystemDirectory(Buffer,144);

Result := Copy(StrPas(Buffer),1,3);

End;

Agora você pode utilizar Drive para pegar o drive onde está instalado o SO (se tiver 2 hd's, essa função só vai pegar a do SO!!!)

Assim, por exemplo:

.LoadFromFile(drive+'Mog\Arquivo.mdb');

Agora, se você quiser pegar de todos os drivers, recomendo que utilize o componente TDriveComboBox da paleta Win3.1, ou ainda me avise para que eu procure algum procedimento para isso..

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, esqueci de dizer que comecei a programar a pouco tempo e ainda estou estudando algumas coisas.

Esse form seria a form principal do meu projeto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria a form que você precisa usar a função..

mas como está declarada na seção Public, outros forms podem utiliza-la..

Se você declarar no form1, por exemplo, você pode utiliza-la no form 2 utilizando, NO FORM 2, o seguinte:

Form1.Drive;

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma pergunta.

Todo esse script eu coloco em public?

e se for, presisa colocalos entre os {} ?

tipo assim:

{Function drive : String;}
{Function TFrmPincipal.drive : String;
Var
Buffer : Array[0..144] of Char;
Begin
GetSystemDirectory(Buffer,144);
Result := Copy(StrPas(Buffer),1,3);
end;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

O que estiver entre { } é comentario e não é lido pelo compilador como código..

Na seção public você só faz a primeira declaração da função, por ex:

Function drive : String;

E depois faz sua declaração posterior:

Function TFrmPincipal.drive : String;

Var

Buffer : Array[0..144] of Char;

Begin

GetSystemDirectory(Buffer,144);

Result := Copy(StrPas(Buffer),1,3);

end;

Repare que na declaração posterior você deve (por ter declarado em Public) adicionar o FrmPrincipal antes pois a função Drive pertence ao form (ja que você declarou dentro dele)

Sacou?

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mog.lucas obrigado pela dica que você deu, vai ajudar não só a min quanto a outros.

Mas, você sabe como fazer com que a primeira vez que o programa for executado apareça um opendialog com o qual o usuário indique o caminho de onde está o banco de dados e esse caminho fique guardado como diretório do meu ADO Conection?

Se souber favor me diga, eu ficarei grato!^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Para verificar alguma coisa do programa toda vez que ele inicia, é necessário se utilizar de uma das opções:

Registro ou Arquivos

Como fazer os dois, eu deixo você pesquisar (e se tiver duvidas só perguntar)..

Depois disso, é só gravar (no registro, ou no arquivo) o seguinte, por exemplo:

if OpenDialog1.Execute then

CaminhoDB := OpenDialog1.FileName;

Com isso você terá, na variavel CaminhoDB o caminho do db, depois é só jogar no registro ou no arquivo, e checar toda vez que iniciar o programa.

Entendeu?

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×