Saber diretório Atual

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Saber diretório Atual

Mensagem por Dudu_XBase »

Alguém conhece um comando ou alguma rotina para eu saber o nome do diretório q esta rodando meu programa ??


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Use a DIRNAME() da LIB Clipper Tools.

Até logo.

Marcelo
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

(Y) Vlw Marcelo...lpasos de memória...rs...vou formatar minha hd aki...rs e instalar tudo de novo...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Mensagem por ANDRIL »

Ola dudu,

Utilizo o clipper52e e tem a função curdir() do proprio clipper.

Sintexe: CurDir("C:")

Retorno: C:\CLIPPER52\BIN este é o diretorio atual do meu programa.

Abraços!
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Saber diretório Atual

Mensagem por Maligno »

Dudu_XBase escreveu:Alguém conhece um comando ou alguma rotina para eu saber o nome do diretório q esta rodando meu programa ??
As funções que os colegas indicaram retornam o diretório corrente do DOS. Mas se por algum acaso seu programa trocar de diretório, é esse que elas vão retornar, e já não será mais de onde o EXE está. Para saber, a qualquer momento, de qual diretório seu programa foi executado, você precisa de uma função como esta. Acho que deve ficar mais fácil.

[]'s
Maligno
http://www.buzinello.com/prg
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

(Y) obrigado Maligno vou utiliza-la ...vlw


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Acho que a função DIRNAME() ou a CURDIR() funcionam muito bem neste caso, pois ele só precisa executar a função no inicio do programa e guardar em uma variável, esse tipo de função não será usada várias vezes durante o uso do sistema, se ele quer saber onde está o executável basta colocar no inicio do sistema antes de mover-se para outro diretório obviamente.

Até logo.

Marcelo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Clipper escreveu:Acho que a função DIRNAME() ou a CURDIR() funcionam muito bem neste caso, pois ele só precisa executar a função no inicio do programa e guardar em uma variável
Ah, sim. Claro. As duas funções, de fato, funcionarão muito bem. Basta fazer isso mesmo: guardar o diretório numa variável. Entretanto há casos especiais (e estes devem ser levados em consideração) em que essas função não terão o efeito desejado. Acho que lhe escaparam dois detalhes:

1) O diretório de onde a aplicação partiu já está numa variável alocada pelo DOS. Portanto, alocar espaço para mais uma variável é gastar memória à toa. Além do que, em qualquer ponto do programa, é só executar a função AppOrigin(). Ela não tomará muitos recursos do sistema.

2) Se o seu programa está sendo executado por meio do PATH, e você está num diretório totalmente diferente, onde não se encontra o seu programa, você verá CURDIR() retornar um diretório que não lhe serve. Se não ficou claro, atente para o exemplo:

Seu programa está em D:\TOOLS\BIN\EXEMPLO\TST.
Na janela DOS você está em C:\WORK\LIB\DISK\SYSTEM\TOOLS.

Se o PATH contiver o caminho, de onde pode ser executado o seu programa, este será executado.

CURDIR() informará WORK\LIB\DISK\SYSTEM\TOOLS (errado, e sem a letra do drive e a contrabarra inicial).
DIRNAME() informará \WORK\LIB\DISK\SYSTEM\TOOLS (errado, e falta o drive).
AppOrign() informará D:\TOOLS\BIN\EXEMPLO\TST (certo, e caminho completo).

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Realmente é verdade, com relação ao uso da memória não vejo muito problema uma variável a mais não fará tanta diferença, mas há uma outra solução que é o uso da função EXENAME() da mesma Clipper Tools, tenho insistido no uso da CT porque como ele já usa a mesma não precisaria adicionar mais um módulo ao sistema gastando assim a famosa memória.

Até logo.

Marcelo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Realmente é verdade, com relação ao uso da memória não vejo muito problema uma variável a mais não fará tanta diferença
Certamente que não. Mas é um mau hábito de programação. E isso é uma coisa que deve sempre ser evitada, quando possível. E no presente caso é.
mas há uma outra solução que é o uso da função EXENAME() da mesma Clipper Tools
Antes você tinha indicado DirName(), que como eu disse, não serve para todos os casos e ainda precisa de uma variável. Agora você deu uma dica realmente boa. Imagino que nem você a use, senão teria sido sua primeira indicação.
Mas eu próprio não conhecia essa função ExeName(). Testei-a e o resultado foi o mesmo da minha função, que agora vou dispensar, uma vez que já uso a CaTools. Ambas devem ter, inclusive, um fonte praticamente igual. E quero aproveitar para agradecer-lhe a dica, que já me fez economizar um pouco.
tenho insistido no uso da CT porque como ele já usa a mesma não precisaria adicionar mais um módulo ao sistema gastando assim a famosa memória.
O gasto de memória nesse caso específico, como eu disse, não representa tanto problema. São só alguns bytes a mais. O problema é quando isso se torna um hábito. Mas,... Cada qual decide seu melhor caminho.

[]'s
Maligno
http://www.buzinello.com/prg
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

Eu utilizo mtos comando e funções da Ca Tools mas desconhecia esse...
Quero agradecer ao Marcelo e ao Maligno q postaram e me ajudaram na solução.


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder