Página 2 de 3

Como achar um arquivo no computador

Enviado: 05 Jan 2015 16:33
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

Como achar um arquivo no computador

Enviado: 05 Jan 2015 17:23
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.

Como achar um arquivo no computador

Enviado: 05 Jan 2015 17:48
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

Como achar um arquivo no computador

Enviado: 05 Jan 2015 19:57
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.

Como achar um arquivo no computador

Enviado: 05 Jan 2015 20:10
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.

Como achar um arquivo no computador

Enviado: 05 Jan 2015 20:41
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.

Como achar um arquivo no computador

Enviado: 05 Jan 2015 21:21
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.

Como achar um arquivo no computador

Enviado: 06 Jan 2015 10:11
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.

Como achar um arquivo no computador

Enviado: 06 Jan 2015 11:07
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.

Como achar um arquivo no computador

Enviado: 06 Jan 2015 12:09
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.

Como achar um arquivo no computador

Enviado: 06 Jan 2015 14:25
por asimoes
Podem ignorar o meu post!

Como achar um arquivo no computador

Enviado: 05 Jul 2019 18:14
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

Como achar um arquivo no computador

Enviado: 05 Jul 2019 19:00
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.

Como achar um arquivo no computador

Enviado: 06 Jul 2019 10:00
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( "" ) )

Como achar um arquivo no computador

Enviado: 06 Jul 2019 11:36
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