Jump to content
Fivewin Brasil

DETECTAR UM DIRETORIO AUTOMATICAMENTE


kapiaba

Recommended Posts

Boa Tarde galera,

COMO FAÇO PARA DETECTAR UM DIRETORIO AUTOMATICAMENTE?

Exemplo:

Preciso que um programa detecte se o FIVEWIN esta instalado no HD.

Idem para o [x]HARBOUR

Idem para o BORLAND\BCC55

Preciso localizar as PASTAS e trazer para ´dentro´ do programa.

Idéias, please!

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

  • Replies 50
  • Created
  • Last Reply

Top Posters In This Topic

Boa Tarde galera,

COMO FAÇO PARA DETECTAR UM DIRETORIO AUTOMATICAMENTE?

Exemplo:

Preciso que um programa detecte se o FIVEWIN esta instalado no HD.

Idem para o [x]HARBOUR

Idem para o BORLAND\BCC55

Preciso localizar as PASTAS e trazer para ´dentro´ do programa.

Idéias, please!

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Melhorando, este comando por exemplo, RETORNA .T., para a exitencia dos diretorios.

Mas, e se o usuario tiver varias versoes do FIVEWIN ou do [x]Harbour??


? lIsDir("C:\FWH27\SAMPLES")

? lIsDir("C:\")

id=code>id=code>

Aferrou-se...

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Editado por - kapiaba on 18/02/2009 16:52:27

Link to comment
Share on other sites

Blz Joao( meu Curintiano predileto)...

Bom..se ele tiver varias versoes do Fivewin, e vc ker buscar uma versao especifica ja pre-definida no seu sistema, basta vc abrir o fw\include\fivewin.ch e ler a linha da versao:


#ifdef __HARBOUR__

#ifdef __XHARBOUR__

#ifndef __64__

#define FWVERSION "FWHX 8.12"

id=code>id=code>

@braços Ale

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.

Editado por - Ale SB on 18/02/2009 17:43:40

Link to comment
Share on other sites

citação:

Blz Joao( meu Curintiano predileto)...

Bom..se ele tiver varias versoes do Fivewin, e vc ker buscar uma versao especifica ja pre-definida no seu sistema, basta vc abrir o fw\include\fivewin.ch e ler a linha da versao:


#ifdef __HARBOUR__

#ifdef __XHARBOUR__

#ifndef __64__

#define FWVERSION "FWHX 8.12"

id=code>id=code>

@braços Ale

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.

Editado por - Ale SB on 18/02/2009 17:43:40


id=quote>id=quote>

Que beleza... E como é que digo AO PROGRAMA para ele LER o FIVEWIN.CH?? E primeiro, precisa-se DETECTAR VIA PROGRAMA, ONDE ESTà O FIVEWIN!

Que dureza... Vou tomar um DREHER agora mesmo...

Abraços...

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Acho q uma ideia seria algo como:


aPaths := { ;

'c:\fw\include\fivewin.ch' ,;

'c:\fwh\include\fivewin.ch' ,;

'c:\fw27\include\fivewin.ch' ,;

'c:\fw28\include\fivewin.ch' ;

}

cFW := FindPath( aPaths )

aPaths := { ;

'c:\borland\bcc\bin\bcc32.exe' ,;

'c:\borland\bcc55\bin\bcc32.exe' ,;

'c:\bcc\bin\bcc32.exe' ,;

'c:\bcc55\bin\bcc32.exe' ;

}

cBCC := FindPath( aPaths )

? 'FW:', cFW

? 'BCC', cBCC

?

/*

* Verifica se o PATH de algum dos arquivos passados como argumento existe. Caso

* seja encontrado algum arquivo, retorna o PATH completo dele j  com a "\" no

* final.

* 18/02/2009 - 16:13:39

*/

STATIC;

FUNCTION FindPath( aPath )

LOCAL r := ''

LOCAL i, p

FOR i := 1 TO Len( aPath )

p := aPath

IF !File( p )

Loop

End

r := Substr( p, 1, At( '\', p ) )

p := Substr( p, At( '\', p ) +1 )

r += Substr( p, 1, At( '\', p ) )

Exit

End

RETURN r

id=code>id=code>

Claro que os paths acima estao fixos, mas daria para chutar os mais comuns e assim tentar adivinhar onde podem estar... de qqer forma é uma ideia.

O Pelles C eu sei que podes pegar pelo registro. O WorkShop (The Best) eu acredito q seja buscando no HD mesmo como eu fiz acima.

assinatura.jpg

Link to comment
Share on other sites

João, não sei até que ponto pode ajudar, mas...

Eu coloco na versao do five (include.ch), uma informação a mais, e faço tudo com base nisto.


#ifdef __HARBOUR__

#ifdef __XHARBOUR__

#define FWXHVersao "901-1.10"id=red>

#ifndef __64__

#define FWVERSION "FWHX 9.01"

#define FWDESCRIPTION "FiveWin for xHarbour"

#else

#define FWVERSION "FWHX64 9.01"

#define FWDESCRIPTION "FiveWin for xHarbour 64"

#endif

id=code>id=code>

No meus sistemas eu leio o FWXHVersao e utilizo aos meus propositos.

Acredito que se voce fizer a mesma coisa, vai resolver.

Bem se é o que entendi.

logofw.png

Link to comment
Share on other sites

citação:

citação:

Blz Joao( meu Curintiano predileto)...

Bom..se ele tiver varias versoes do Fivewin, e vc ker buscar uma versao especifica ja pre-definida no seu sistema, basta vc abrir o fw\include\fivewin.ch e ler a linha da versao:


#ifdef __HARBOUR__

#ifdef __XHARBOUR__

#ifndef __64__

#define FWVERSION "FWHX 8.12"

id=code>id=code>

@braços Ale

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.

Editado por - Ale SB on 18/02/2009 17:43:40


id=quote>id=quote>

Que beleza... E como é que digo AO PROGRAMA para ele LER o FIVEWIN.CH?? E primeiro, precisa-se DETECTAR VIA PROGRAMA, ONDE ESTà O FIVEWIN!

Que dureza... Vou tomar um DREHER agora mesmo...

Abraços...

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

kacete mano, tu nao sabe fazer isso, vou cassar seu diploma...hehehe..

Eu nao sei oq vc ker fazer ai...mas..por exemplo

Se vc ja tem predefinido a versao do Fw q vc ker buscar, vc vaio abrindo todos Fw q o cara tem na maquina e verificando o ch deles, eh simples.

Qq coisa entre em contato comigo por email, e me dê umas dicas sobre seu projeto...eu imagino ja oq eh, e por acho q ta mais facil do q vc imagina..

entre em contato neste email:

suporte@sbinfosystem.com.br

@braços Ale

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.

Link to comment
Share on other sites

citação:

xHb e Bcc


version()

HB_PCodeVer()

HB_BuildDate()

//--> Bcc

HB_Compiler()

id=code>id=code>

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.


id=quote>id=quote>

UUUUIII!! PARA Ô!! VEJA A IDEIA DO VAILTON, MELHORE, PLEASE!

Kissses inthe heart!

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Mas vc nao ker pegar a versao ?

se o cara tem la:

c:\xHarbour

Como vai saber a versao q ele usa ?? Hummm, Hummmm

bom, fiz oq pude, sem saber examente oq vc precisa...fica complicado ajudar...minha dica nao esta errado nao....

@braços Ale

aleseribeli@hotmail.com

Andradina/SP

Logo_SBInfo.jpg

O Titanic tinha o motor de Opala, e quando deu o 1° arrancadão na água ficou impossível desviar do iceberg.

Link to comment
Share on other sites

Acho que se vc achar o diretorio de uma versão apenas e já mostrar para ele, já ajuda. Pq de qqer forma, depois de detectar vc ainda precisa exibir o DIALOG para ele confirmar o diretorio...

A versão do FW vc pega dentro do FIVEWIN.CH e do [x]HB dentro de hbver.h (desmembrado) dentro na pasta include.

assinatura.jpg

Link to comment
Share on other sites

Olá,

Acho q o meio mais rápido e seguro, seria cria dar um comando Dir no DOS (pode ser de dentro do seu programa mesmo).

Ex. :

Dir FiveWin.Ch /S > Arquivo.Txt

Dir Harbour.Exe /S >> Arquivo.Txt

Isso fará com que crie um arquivo.txt que daria para ler sem problemas icon_smile_wink.gif

P.S.: Não esqueça que se for em Windows Vista, vc precisa direcionar para uma pasta a criação do txt, pois ele não deixa criar na raiz icon_smile_wink.gif


O volume na unidade C nÆo tem nome.

O N£mero de S‚rie do Volume ‚ ECF7-2012

Pasta de C:\aula\PRG\AULA1

19/11/2002 10:35 53.774 FIVEWIN.CH

1 arquivo(s) 53.774 bytes

Pasta de C:\FW\FW24\INCLUDE

19/11/2002 10:35 53.774 FIVEWIN.CH

1 arquivo(s) 53.774 bytes

Pasta de C:\fw20\include

09/01/2007 11:34 48.226 FIVEWIN.CH

1 arquivo(s) 48.226 bytes

Pasta de C:\fw20\include\eu

13/09/2001 13:59 54.080 FIVEWIN.CH

1 arquivo(s) 54.080 bytes

Pasta de C:\FW24

22/05/2003 08:21 52.941 FIVEWIN.CH

1 arquivo(s) 52.941 bytes

Pasta de C:\FW24\include

19/11/2002 10:35 53.774 FIVEWIN.CH

1 arquivo(s) 53.774 bytes

Pasta de C:\FW24\include\eu

13/09/2001 13:59 54.080 FIVEWIN.CH

1 arquivo(s) 54.080 bytes

Pasta de C:\FW24\Lib

22/05/2003 08:21 52.941 FIVEWIN.CH

1 arquivo(s) 52.941 bytes

Pasta de C:\FWH\INCLUDE

11/05/2005 20:17 59.772 FIVEWIN.CH

1 arquivo(s) 59.772 bytes

Pasta de C:\Fwh24\INCLUDE

21/10/2003 09:59 54.013 FIVEWIN.CH

1 arquivo(s) 54.013 bytes

Pasta de C:\FWH25Fev\INCLUDE

12/02/2005 09:27 56.397 FIVEWIN.CH

1 arquivo(s) 56.397 bytes

Pasta de C:\FwH25Jun\INCLUDE

03/07/2004 13:46 54.104 FIVEWIN.CH

1 arquivo(s) 54.104 bytes

Pasta de C:\FwH26Abr\INCLUDE

08/04/2005 09:46 59.215 fivewin.ch

1 arquivo(s) 59.215 bytes

Pasta de C:\FwH26Jun\INCLUDE

19/06/2005 13:52 59.776 fivewin.ch

1 arquivo(s) 59.776 bytes

Pasta de C:\FwH26Mai\INCLUDE

11/05/2005 20:17 59.772 FIVEWIN.CH

1 arquivo(s) 59.772 bytes

Pasta de C:\FwH27\INCLUDE

20/11/2005 21:57 59.888 fivewin.ch

1 arquivo(s) 59.888 bytes

Pasta de C:\Fwh28Out\INCLUDE

29/10/2006 08:53 65.751 fivewin.ch

1 arquivo(s) 65.751 bytes

Pasta de C:\FWH701\INCLUDE

13/01/2007 07:51 66.719 fivewin.ch

1 arquivo(s) 66.719 bytes

Pasta de C:\FWH704\INCLUDE

05/04/2007 11:16 66.773 fivewin.ch

1 arquivo(s) 66.773 bytes

Pasta de C:\FWH709\include

10/09/2007 10:05 67.870 fivewin.ch

1 arquivo(s) 67.870 bytes

Pasta de C:\FwH71\INCLUDE

13/01/2007 07:51 66.719 fivewin.ch

1 arquivo(s) 66.719 bytes

Pasta de C:\FWH712\include

14/11/2007 08:51 68.086 fivewin.ch

1 arquivo(s) 68.086 bytes

Pasta de C:\FWH801\include

04/01/2008 09:07 68.402 fivewin.ch

1 arquivo(s) 68.402 bytes

Pasta de C:\FWH802\include

10/02/2008 20:47 68.402 fivewin.ch

1 arquivo(s) 68.402 bytes

Pasta de C:\FWH804\include

11/04/2008 13:45 68.713 fivewin.ch

1 arquivo(s) 68.713 bytes

Pasta de C:\FWH805\include

14/05/2008 12:31 68.468 fivewin.ch

1 arquivo(s) 68.468 bytes

Pasta de C:\FWH806\include

27/06/2008 08:31 68.468 fivewin.ch

1 arquivo(s) 68.468 bytes

Pasta de C:\FWH807\include

26/07/2008 09:45 68.512 fivewin.ch

1 arquivo(s) 68.512 bytes

Pasta de C:\FWH808\include

17/01/2009 07:55 68.834 fivewin.ch

1 arquivo(s) 68.834 bytes

Pasta de C:\FWH809\include

19/09/2008 10:35 68.834 fivewin.ch

1 arquivo(s) 68.834 bytes

Pasta de C:\FWH810\include

12/10/2008 08:45 68.944 fivewin.ch

1 arquivo(s) 68.944 bytes

Total de Arquivos na Lista:

31 arquivo(s) 1.906.022 bytes

0 pasta(s) 88.766.631.936 bytes dispon¡veis

id=code>id=code>

Vagner Wirts

VI Encontro está chegando icon_smile_big.gif, não perca icon_smile_big.gif

Link to comment
Share on other sites

aDiretorios := DirectoryRecurse("C:\")

Isso vai retornar um array com TODOS os diretórios do C:\, você pode fazer para cada unidade, jogar aDiretorios[i,1] para um DBF e usar um OrdWildSeek() para buscar as pastas.

Exemplo:


aDiretorios := DirectoryRecurse("C:\")

For i = 1 to Len(aDiretorios)

//Grava no seu DBF aDiretorios[i,1]

end

// Indexa o DBF pelos diretorios

If OrdWildSeek(*+"Fivewin"+*)

Alert("Fivewin encontrado: "+DIRETORIO) //-- Sendo DIRETORIO o nome do campo no DBF

End

id=code>id=code>

MSN: samirid=red>abreuid=black>@hotmail.com

Skype: Samirid=red>Abreuid=black>

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

Ao inves do DIR /S o xHB possui uma funcao específica para efetuar isto: DIRECTORYRECURSE()

Eis um exemplo completo de como usá-la:


? "Will get ALL *.EXE file in C:\WINDOWS and SUB folders. Press any key ...."

Inkey(0)

? "Working ..."

Showit( DIRECTORYRECURSE( "C:\WINDOWS\*.EXE" ) )

?

? "Will get ALL *.DLL file in C:\WINDOWS and SUB folders. Press any key ...."

Inkey(0)

? "Working ..."

ShowIt( DIRECTORYRECURSE( "C:\WINDOWS\*.DLL" ) )

? "Will get ALL *.OCX files in C:\WINDOWS and SUB folders. Press any key ...."

Inkey(0)

? "Working ..."

ShowIt( DIRECTORYRECURSE( "C:\WINDOWS\*.OCX" ) )

? "Will get ALL *.PRG file in CURRENT and SUB folders. Press any key ...."

Inkey(0)

? "Working ..."

ShowIt( DIRECTORYRECURSE( "*.PRG" ) )

RETURN

//------------------------------------------------

STATIC PROCEDURE ShowIt( aDir )

LOCAL aFile

FOR EACH aFile IN aDir

? PadR( aFile[1], 38 ), Transform( aFile[2], "999,999,999,999" ), aFile[3], aFile[4], aFile[5]

NEXT

?

? Len( aDir), "files listed."

?

RETURN

id=code>id=code>

assinatura.jpg

Link to comment
Share on other sites

Caracas Manos!

Vou precisar de INTELIGENCIA, para entender e fazer tudo isto.

Vailton, achei a ideia do SAMIR ABREU muito boa, vou tentar, se não conseguir, vai ficar do jeito que está. Afinal, o usuário somente vai escolher os diretorios uma vez somente e gravar no .DBF.

Ficar ´varrendo´ o HD e pegar a versão, por no GET para ele gravar aja trabalho... Mesmo assim, vou aproveitar o carnaval e queimar os ´chifres´. Espero conseguir... senão...

Ressalvo que sua idéia foi ótima... Obrigado.

Logo, logo disponibilizo uma VERSÃO DEMO para todos, já com algumas melhorias...

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Samir, meu piglio! O que esta errado nesta sintaxe??


#Include "fivewin.ch"

#Include "Directry.ch"

//------------------------------------------------

FUNCTION Main()

LOCAL aDir, i

aDir := DirectoryRecurse("C:\") //-> Demora pra karamba

For i = 1 to Len( aDir )

//Grava no seu DBF aDiretorios[i,1]

NEXT

? Len( aDir ), "Arquivos Listados."

RETURN NIL

id=code>id=code>

//-> Retorno: 0 Arquivos Listados - Como consertar isto?

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

é porque pega todos os "ARQUIVOS" ao invés de todas as "PASTAS" ae deve estourar a matriz porque são milhares de arquivos.... usei como EXEMPLO...

No seu caso você deveria fazer usando um filtro, no caso poderia ser por executáveis:

aDir := DirectoryRecurse("C:\*.exe") assim filtrando somente os executáveis ae você iria comparar com os nomes dos executáveis do fivewin, Harbour, etc...

MSN: samirid=red>abreuid=black>@hotmail.com

Skype: Samirid=red>Abreuid=black>

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

citação:

Samir, meu piglio! O que esta errado nesta sintaxe??


#Include "fivewin.ch"

#Include "Directry.ch"

//------------------------------------------------

FUNCTION Main()

LOCAL aDir, i

aDir := DirectoryRecurse("C:\") //-> Demora pra karamba

For i = 1 to Len( aDir )

//Grava no seu DBF aDiretorios[i,1]

NEXT

? Len( aDir ), "Arquivos Listados."

RETURN NIL

id=code>id=code>

//-> Retorno: 0 Arquivos Listados - Como consertar isto?

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Olá,

1ªmente, vc não estipulou o que procurar icon_smile_big.gif

2ªmente, irá demorar de acordo com a quantidade de diretórios que vc possui na mqna icon_smile_wink.gif

aDir := DirectoryRecurse("C:\FiveWin.Ch")

Vagner Wirts

VI Encontro está chegando icon_smile_big.gif, não perca icon_smile_big.gif

Link to comment
Share on other sites

citação:

citação:

Samir, meu piglio! O que esta errado nesta sintaxe??


#Include "fivewin.ch"

#Include "Directry.ch"

//------------------------------------------------

FUNCTION Main()

LOCAL aDir, i

aDir := DirectoryRecurse("C:\") //-> Demora pra karamba

For i = 1 to Len( aDir )

//Grava no seu DBF aDiretorios[i,1]

NEXT

? Len( aDir ), "Arquivos Listados."

RETURN NIL

id=code>id=code>

//-> Retorno: 0 Arquivos Listados - Como consertar isto?

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe


id=quote>id=quote>

Olá,

1ªmente, vc não estipulou o que procurar icon_smile_big.gif

2ªmente, irá demorar de acordo com a quantidade de diretórios que vc possui na mqna icon_smile_wink.gif

aDir := DirectoryRecurse("C:\FiveWin.Ch")

Vagner Wirts

VI Encontro está chegando icon_smile_big.gif, não perca icon_smile_big.gif


id=quote>id=quote>

NEM A PAU JUVENALid=size5>

Não funcionou. Este comando é MUITO RUIM, ´mataria o usuario de raiva´!! E agora VAILTON?!! hehehehehe.

Abraço.s

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

Acho q minha primeira sugestão que usava FindPath() ainda é válida. Tenho mais 1 ou 2 ideias para este problema... mas acho q ia complicar mais...

assinatura.jpg


id=quote>id=quote>

VOU TESTÃ-LA NO FINAL DE SEMANA E CARNAVAL. Vamos ver se deste ´mato sai coelho´, Rapaz que dureza!! Idéia maravilhosa, mas na prática... AFF!! KKKKKKKKK

Ah, em tempo: ´ESTE JEITÃO DE MAXÃO... SAY NÃO´ KKKKK MANUUUUEEEEEEELLLL????!!!

Abraço.s

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Editado por - kapiaba on 19/02/2009 12:57:31

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...