Como saber a letra da unidade raiz da maquina?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Como saber a letra da unidade raiz da maquina?

Mensagem por juniorcamilo »

Amigos me deparei com um caso q nunca tinha visto, sempre soube que poderia ser possivel, fiz diversas rotinas de arquivos temporarios gravar na raiz da maquina local, mas em um determinado cliente alguem particionou o HD começando com a letra H: ,rsrsrrs, ai as diversas rotina nao funciona, oq fazer?
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 »

O sujeito deve ter tido um motivo muito especial pra fazer uma coisa tão esquisita como essa. Ou ele tem "casco". :)))

A determinação das letras dos drives é feita pelo sistema operacional. No XP, que é o que eu uso, é só ir no Painel de Controle e executar o "Gerenciamento do Computador". Nas outras versões eu não conheço.

Agora, se quiser determinar qual é o drive padrão para o SO, você pode testar (também no XP) a variável de ambiente "SystemDrive".
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
DMR
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 03 Out 2007 09:15
Localização: Porto Ferreira-SP

Mensagem por DMR »

Bom dia !

Não sei se é isso que precisa, mas a função Diskname() retorna o drive corrente do DOS.

Espero ter ajudado
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Eu tive umas experiência similar e resolví fazer isto:

Código: Selecionar todos

VVOL:=SUBSTR(ALLTRIM(EXENAME()),1,2)
IF VVOL="C:"
   XVOL:="C:"
ELSE
   IF DRIVETYPE(VVOL)=3
      XVOL:=VVOL
   ELSE
      XVOL:="C:"
   ENDIF
ENDIF
Neste exemplo eu forço a unidade para a letra "C:" que é a que todo mundo deveria ter. Mas quando a unidade do HARD-DISK for outra que não seja "C:" então assumirá a letra que corresponder. Isto porque numa rede, a coisa é diferente. Teste esse exemplo, mas não esqueça de fornecer o caminho onde se encontram os arquivos juntamente com a variável "XVOL" que contém a letra da unidade.

Por exemplo:

Código: Selecionar todos

IF FILE( XVOL+"LOCA.CFG" )
E para verificar se é servidor, por exemplo:

Código: Selecionar todos

   IF !(DISKNAME()=SUBSTR(XVOL,1,1))
      VTERM=GETENV("TERMINAL")
      IF EMPTY(ALLTRIM(VTERM))
         VTERM=UPPER(NETNAME())
      ENDIF
   ELSE
      VTERM="SERVIDOR"
   ENDIF
Editado pela última vez por Pablo César em 07 Nov 2007 08:04, em um total de 1 vez.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Não sei se é isso que precisa, mas a função Diskname() retorna o drive corrente do DOS.
Mas lembre-se que nem sempre o drive corrente é o primeiro drive da máquina. Essa é a questão do colega.

Aliás, corrigindo/complementando minha mensagem anterior: nem sempre o sistema operacional está instalado no primeiro drive da máquina. E levando-se em conta a esquisitice da coisa, realmente não dá pra confiar. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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 »

Pablo César escreveu:Eu tive umas experiência similar e resolví fazer isto:
Mas essa função não ajuda a determinar QUAL o primeiro drive da máquina.
Editado pela última vez por Maligno em 07 Nov 2007 08:06, em um total de 1 vez.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

nem sempre o sistema operacional está instalado no primeiro drive da máquina.
Para esses casos o WAPI iria apresentar o drive em que o SO está instalado ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Para esses casos o WAPI iria apresentar o drive em que o SO está instalado ?
Sim, mas o local onde o SO foi instalado pode ser outro que não o primeiro drive disponível. É a mesma situação da variável de ambiente "SystemDrive". O Junior quer saber qual o primeiro drive da máquina. Esse é o problema.
Editado pela última vez por Maligno em 07 Nov 2007 08:08, em um total de 1 vez.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Mas essa função não ajuda a determinar QUAL o primeiro drive da máquina.
Claro que SIM. Não determina qual é o drive da máquina que o SO está instalado, mas determina qual é o drive da máquina em que se encontra posicionado.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

mas determina qual é o drive da máquina em que se encontra posicionado.
Foi isso o que o Junior perguntou?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

mas o local onde o SO foi instalado pode ser outro que não o primeiro drive disponível
Quer dizer então que a GETSYSTEMINFO (item 3 e 4 por exemplo) do WAPI iria mostra o primeiro drive e não onde ele está valendo ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Quer dizer então que a GETSYSTEMINFO (item 3 e 4 por exemplo) do WAPI iria mostra o primeiro drive e não onde ele está valendo ?
Essas opções mostram o local onde o SO foi instalado. Mas isso não quer dizer nada. Não serve. Tampouco serve saber qual o drive corrente. O que o Junior está questionando é: como saber qual a letra do PRIMEIRO volume da máquina, independentemente de onde está o SO ou o drive corrente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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 »

juniorcamilo escreveu:fiz diversas rotinas de arquivos temporarios gravar na raiz da maquina local, mas em um determinado cliente alguem particionou o HD começando com a letra H: ,rsrsrrs, ai as diversas rotina nao funciona, oq fazer?
Aliás, se quiser esquecer essa questão de primeiro volume do HD e apenas resolver o problema dos arquivos temporários, pode fazer como eu: gravar os temporários num diretório TEMP dentro do diretório de instalação do seu próprio programa. Acho que fica mais fácil e correto do que quebrar a cabeça pra resolver as esquisitices dos outros.

Ou, alternativamente, usar o diretório que o próprio Windows usa, lendo uma das variáveis de ambiente que ele cria: "TEMP", "TMP" ou "TMPDIR".
Editado pela última vez por Maligno em 07 Nov 2007 08:24, em um total de 1 vez.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Maligno escreveu:
mas determina qual é o drive da máquina em que se encontra posicionado.
Foi isso o que o Junior perguntou?
Não sei se é porque são as primeiras horas de quando a gente acorda ou é que você não está entendendo...

Desculpe se pareço rude outra vez, meu caro colega: mas quem deveria dizer se serve é o JuniorCamilo, pois eu lancei uma possível solução. Cabe ele verificar se serve ou até mesmo podendo ser adaptada. Tudo irá depender de como é a situação:

- Se o sistema está em rede
- Se a máquina em questão é a do SERVIDOR
- Se o mapeamento é fixo
- Se se posiciona na unida e diretório onde o aplicativo se encontra

Enfim, tem muitas formas de se fazerem as coisas. Lembro da idéia do colega Eolo que mesmo em rede existem os executáveis em cada máquina. Daí, não tenho experiência sobre essa outra questão.

Mas em definitiva Maligno, o que o colega disse:
fiz diversas rotinas de arquivos temporarios gravar na raiz da maquina local, mas em um determinado cliente alguem particionou o HD começando com a letra H: ,rsrsrrs, ai as diversas rotina nao funciona, oq fazer
Siginifica que ele tem funções que direcionam para um drive fixo ou limitado (de tal a tal unidade) e que não está funcionando. Portanto eu considero que o problema está porque a unidade não é a padrão e o aplicativo não funciona. E eu parto pelo principio em que DEVE se posicionar na unidade e pasta onde o aplicativo (do SERVIDOR) se encontra.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
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 »

Me ative à responder à questão do colega: saber qual o PRIMEIRO volume da máquina. Entretanto, em se tratando de arquivos temporários, a melhor coisa a fazer é esquecer a rede. Não é prudente usar a rede para fazer trafegar arquivos temporários. É um desperdício de banda. Então, desconsiderando a questão rede, a minha sugestão faz sentido.

Ainda assim, repito: a questão dele é sobre a forma de determinar qual o PRIMEIRO volume do disco. Logo, repito: sua função não serve.

Mas, como eu disse antes: particularmente, eu preferiria esquecer essa questão e usar uma alternativa para direcionar os arquivos temporário, sempre em drive local. Nunca em rede. Daí minhas duas sugestões: usar um diretório fixo ou usar o diretório definido pelo próprio Windows.

Em tempo: quando eu disse que uso meu TEMP, esqueci de dizer que sempre tenho um diretório fixo no HD local. Nunca uso rede pra isso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder