Como achar um arquivo no computador

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

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á

Como achar um arquivo no computador

Mensagem por Pablo César »

Eolo escreveu:"O usuário baixa um arquivo do e-mail, não sabe onde salvou e depois o SISTEMA da empresa tem que procurar o arquivo?". Hã? Como assim?

Algo como "O filho do usuário quer saber onde o Governor of Poler 2 salva os arquivos, aí o cliente acessa o sistema da empresa e acha os arquivos?". Hã?


A pergunta inicial do Helio até poderia ter algum sentido, tanto que respondi. Mas depois deste último post dele, sei não. Imagino o financeiro, debruçado sobre o Contas a Pagar, tendo que parar porque o presidente da empresa quer saber onde o Gamão do Windows 7 salvou os scores dele...

Pra mim não faz sentido.
KKKKKK ahhh só você Eolo, pra me fazer rir agora... kkkkkkk

Hélio, eu não sei se você procura uma solução para o modo console ou GUI. Se for para aplicativos Windows (o que eu posso falar), dependendo a biblioteca gráfica que você utilize. A maioria tem uma função que utiliza-se da API (recursos do Windows) e que certamente você poderá contar com os arquivos "Recentes". Isto é o que mais prático se me ocorre dizer. A outra é você guardar o destino do arquivo em arquivo INI por exemplo. Mas tudo vai depender como é acionado esse download.

Porque ficar procurando o HD inteiro, é BESTEIRA. Desculpe dizer assim curto e grosso. Não se pode sub-utilizar um sistema pra essa finalidade. Já existe o "Localizador" do próprio Windows. Geralmente quando gravamos algo e tentar voltar a gravar, o Windows guarda o ultimo caminho/path.

Desculpe Hélio estarmos rindo aqui, mas não é de você e sim da situação que foi criada tudo por causa da falta de mais informaçõese um e outro ficamos imaginando inúmeras situações...

Mas que nós todos estamos ficando véio... ahhh estamos sim ! kkkkk
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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Como achar um arquivo no computador

Mensagem por Eolo »

Nah, tem que ter humor, senão não vale a pena, Pablo. :-)

Enfim, não é ficar velho. Minha (digamos) preocupação é "se encantar mais com a rede do que com o mar", como diz a letra daquela música. Discutir os bits da função sem se ligar pra que ela vai servir.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Como achar um arquivo no computador

Mensagem por alxsts »

Olá!

Código: Selecionar todos

LOCAL cPath := Space(255)

@10,10 SAY "Informe o local onde você salvou a porcaria do arquivo e o nome dele:" ;
       GET cFile ;
      PICT "@S40"

READ
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como achar um arquivo no computador

Mensagem por helio »

Boa noite,

Caro Eolo este assunto foi porque preciso saber onde o cliente baixou o arquivo liberacao do meu sistema porque tem muitos cliente que nao sabe salvar dentro a pasta correta por incrivel que pareca e so isso.
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como achar um arquivo no computador

Mensagem por helio »

oa noite,

Acho que deveria ter mais respeito com os amigos e se quiser colaborar bem e nao fazer graca porque o que postei nao e brincadeira é o que estou precisando e o Jairo Maia me ajudou com um simples exemplo nao tar com piada e se informar mais se quiser ajudar.
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como achar um arquivo no computador

Mensagem por JoséQuintas »

Não faça isso.
Por acaso pensou na hipótese de existirem vários programas com mesmo nome?
Pra compensar que o cliente não sabe aonde salva, vai pegar um programa que não sabe se é o correto.

Se é assim, mais seguro então colocar em seu programa pra ele mesmo fazer o download.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
helio
Usuário Nível 3
Usuário Nível 3
Mensagens: 175
Registrado em: 04 Ago 2004 10:36
Localização: São Bento do Una-PE
Contato:

Como achar um arquivo no computador

Mensagem por helio »

Boa noite, Jose

Ja tentei colocar o downloads dentro do sistema mais nao consegui uso XHARBOUR mais o arquivo que mando para o cliente e o cnpj do mesmo.
Helio Beltrao Jr.
msn: helio@htisistemas.com
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Como achar um arquivo no computador

Mensagem por Eolo »

Hélio, vou dar uma sugestão, que é como eu faço há muito tempo.

Ao invés de mandar um arquivo para os seus clientes, mande uma CHAVE criptografada, que vai desbloquear o programa pelo prazo desejado. E essa chave pode ir por e-mail, por SMS, por telefone ou ainda pessoalmente. Mais simples.

1. Vencido o prazo vigente, o seu sistema abre uma janela avisando sobre o bloqueio e solicitando ao usuário que entre com a CHAVE de renovação.

2. Essa chave pode ser algo como "AKS89AB20", que corresponde a "001150131" (cliente 001, vencimento 31/01/15), criptografado. No meu caso, faço uma chave mais longa, com informações que não têm nada a ver, só pra complicar uma eventual tentativa de quebra.

3. O usuário digita "AKS89AB20", o seu sistema converte para "001150131", confirma que o cliente é o "001" e registra o novo vencimento, liberando tudo.

4. Esse novo vencimento (o "AKS89AB20", criptografado), vc guarda em um arquivo "escondido" dentro da pasta do Windows ou outra qualquer. No início do sistema, vc procura por esse arquivo (cuja localização vc conhece), checa se a vigência está ok e libera ou não o sistema para uso. E se esse arquivo não existir, vc interrompe o sistema e solta na tela um "Favor contatar o Hélio".

5. Isto é infalível? Não é. Mas um usuário comum vai apanhar bastante até conseguir quebrar. No meu caso, nenhum usuário nunca quebrou. O usuário pode até achar o arquivo, mas vai ler "AKS89AB20" e usar como?

6. Para encriptar, não precisa inventar muito. Crie uma função que troque 1 por X, 2 por @, 3 por J etc. Para desencriptar, é só trocar X por 1, @ por 2, J por 3 etc.

7. Para criar, ler e gravar o arquivo, é só usar as funções de baixo nível FOpen, FWrite, Fread, Fclose.

Veja se ajuda.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como achar um arquivo no computador

Mensagem por asimoes »

Muitos programas comerciais trabalham com chave de ativação/renovação que são enviadas por email.
O programa só precisa guardar o arquivo chave (licença) de validação na pasta do sistema e validar a chave com algoritmo de validação.

Ex. a chave informada é AJK123I100 esta chave é a data de vigência e expiração de funcionamento e pode conter outras informações.

Se a chave informada for valida, o sistema grava um arquivo contendo a chave em uma pasta especifica e a usa até que expire.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Como achar um arquivo no computador

Mensagem por Eolo »

O programa só precisa guardar o arquivo chave (licença) de validação na pasta do sistema
Asimões, veja os posts anteriores do Helio: o problema é que o usuário recebe o arquivo por email e salva em qualquer lugar, depois não onde salvou e toca a procurar o danado.

Aliás, não entendi direito o que o seu post acrescentou ao assunto.

Também, o arquivo chave não PRECISA ficar na pasta do sistema. Pode ficar em qualquer lugar.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como achar um arquivo no computador

Mensagem por asimoes »

Podem ignorar o meu post!
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
syslink
Usuário Nível 3
Usuário Nível 3
Mensagens: 132
Registrado em: 20 Fev 2018 13:13
Localização: joinvile/sc

Como achar um arquivo no computador

Mensagem por syslink »

gente td bem

to tentano entender o porque nao funciona assim:

Código: Selecionar todos

if .not. file ('C:\WINDOWS\SYSTEM\TESTE.INF') .and. .not. file ('D:\WINDOWS\SYSTEM\TESTE.INF') .and. .not. file ('C:\WINDOWS\SYSTEM32\TESTE.INF') .and. .not. file ('D:\WINDOWS\SYSTEM32\TESTE.INF') .and. .not. file ('C:\Windows\SysWOW64\TESTE.INF') .and. .not. file ('d:\Windows\SysWOW64\TESTE.INF')
    MsgStop('program invalido. será encerrado.)
    close all
    quit
else
    msginfo('programa liberado para uso!')
endif
posso colocar o arquivo teste.inf em qualquer uma das pastas que o sistema nao o encontra. mesmo se substituir o FILE por DIRECTORYRECURSE ou por DIRECTORY num funciona.

Agora se eu mudar para um montao de IF endendados uns aos outros ai funciona como abaixo:

Código: Selecionar todos

   IF .NOT. FILE ('C:\WINDOWS\SYSTEM\TESTE.INF')
      IF .NOT. FILE ('D:\WINDOWS\SYSTEM\TESTE.INF')
         IF .NOT. FILE ('C:\WINDOWS\SYSTEM32\TESTE.INF')
            IF .NOT. FILE ('D:\WINDOWS\SYSTEM32\TESTE.INF')
               IF .NOT. FILE ('C:\WINDOWS\SYSWOW64\TESTE.INF')
                  IF .NOT. FILE ('D:\WINDOWS\SYSWOW64\TESTE.INF')
                     if .not. file ('C:\WINDOWS\SYSTEM\TESTE.INF')
                        if .not. file ('C:\WINDOWS\SYSTEM32\TESTE.INF')
                           if .not. file ('D:\WINDOWS\SYSTEM\TESTE.INF')
                              if .not. file ('D:\WINDOWS\SYSTEM32\TESTE.INF')
                                 if .not. file ('C:\WINDOWS\SYSWOW64\TESTE.INF')
                                    if .not. file ('D:\WINDOWS\SYSWOW64\TESTE.INF')
                                         MsgStop('program invalido. será encerrado.)
                                         close all
                                         quit
                                   else
                                         msginfo('programa liberado para uso!')
                                   endif
                               ENDIF
                            ENDIF
                         ENDIF
                      ENDIF
                   ENDIF
                ENDIF
             ENDIF
          ENDIF
       ENDIF
    ENDIF
 ENDIF
alguem tem uma dica, se precisa de um SET FILE alguma coisa...
ps: nao testei hb_FNameSplit()

obrigado por ajuda
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como achar um arquivo no computador

Mensagem por JoséQuintas »

syslink escreveu:to tentano entender o porque nao funciona assim:
Continua sendo o mesmo motivo da outra vez que perguntou.
Pastas do Windows não são brinquedo, só o administrador consegue mexer.
Crie outra forma de proteger seu programa.

Rode o programa como administrador e vai ver que funciona.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como achar um arquivo no computador

Mensagem por JoséQuintas »

Corrigindo minha resposta:

Seus IFs do primeiro caso estão errados.
Do jeito que colocou, obrigaria a existir em todas as pastas de uma vez.

Código: Selecionar todos

IF ! ( File( "" ) .OR. File( "" ) )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como achar um arquivo no computador

Mensagem por JoséQuintas »

Talvez mais legível:

Código: Selecionar todos

PROCEDURE Main

   IF ! Liberado()
       MsgStop( "program invalido. será encerrado." )
       CLOSE ALL
       QUIT
   ENDIF
   MsgInfo( "programa liberado para uso!" )
   
   RETURN


STATIC FUNCTION Liberado()

   LOCAL lLiberado := .F.
   LOCAL aList := { 
      "C:\WINDOWS\SYSTEM\TESTE.INF", ;
      "D:\WINDOWS\SYSTEM\TESTE.INF", ;
      "C:\WINDOWS\SYSTEM32\TESTE.INF", ;
      "D:\WINDOWS\SYSTEM32\TESTE.INF", ;
      "C:\Windows\SysWOW64\TESTE.INF", ;
      "D:\Windows\SysWOW64\TESTE.INF" }

   AEval( aList, { | e | lLiberado := lLiberado .OR. File( e ) } )
   
   RETURN lLiberado
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder