como usar adir()

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

joselimatb
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 28 Mai 2007 15:14
Localização: Tubarao-SC

como usar adir()

Mensagem por joselimatb »

ola pessoal,
tenho que localizar e usar um arquivo em uma pasta mas o tamanho dele é maior que 8 caractere e o adir() so aparece 8 , se me trazer o nome e data da ultima atualizacao com hora me resolve.
Fiz um exemplo abaixo, mas como ja falei so aparece o nome com 8 caracter.

o que devo mudar ?

Código: Selecionar todos

private vdir[adir("*.xml")]
adir("*.xml",vdir)
vop:=achoice(12,2,20,70,vdir)
if vop=0
   return
endif
@ 22,10 say " Arquivo escolhido :" +vdir[vop]
return
Editado pela última vez por Toledo em 10 Ago 2010 16:06, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: como usar adir()

Mensagem por alxsts »

Olá!

Se você pretende continuar com Clipper, terá que se valer de uma lib chamada LFN.Lib (Long File Names). Use a busca do fórum que encontrará algum material.

Outra opção seria migrar para [x]Harbour.
[]´s
Alexandre Santos (AlxSts)
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 usar adir()

Mensagem por Pablo César »

mas como ja falei so aparece o nome com 8 caracter
Isso acontece porque essa função traz o nome em modo Short Name e não Long Name e daí você precisará uma função que trate isso, como o LFN.LIB como o colega ja mencionou.
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.
joselimatb
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 28 Mai 2007 15:14
Localização: Tubarao-SC

Re: como usar adir()

Mensagem por joselimatb »

tem como aparecer o nome e data com hora da criacao ?
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 usar adir()

Mensagem por Pablo César »

Veja alterações pra você entender por si próprio:

Código: Selecionar todos

/* 
Compilar este exemplo da seguinte forma: 
         CLIPPER TESTE
         RTLINK FI TESTE LIB LFN,NANFOR,LL
*/
nArquivos:=adir("*.xml")
private vdir[nArquivos],vTam[nArquivos],vDat[nArquivos],vHor[nArquivos],vAtr
adir("*.xml",vdir,vTam,vDat,vHor,vAtr)
CLS
vop:=achoice(12,2,20,70,vdir)
if vop=0
   return
endif
// Mostrar as variaveis na tela
setpos(21,00) // só para posicionar na tela (dispensar esta função)
? padr("Data",18,".")+": "+padr(DTOC(vDat[vop]),59)
? padr("Hora",18,".")+": "+padr(vHor[vop],59)
? padr("Tamanho",18,".")+": "+padr(ALLTRIM(STR(vTam[vop]))+" bytes",59)
? padr("Atributo",18,".")+": "+padr(vAtr[vop],59)
? padr("Arquivo escolhido",18,".")+": "
?? LF_TOLONG(vdir[vop])
Note a função LF_TOLONG na ultima linha, serve para mostrar o nome do arquivo em modo longo.
Agora se precisar que seja exibido na tela os nomes longos ao invés de nomes curtos, substitua a linha 10 (do meu exemplo aqui acima) pelas linhas a seguir:

Código: Selecionar todos

vLong:={}
for i=1 to nArquivos
    aadd(vLong, LF_TOLONG(vDir[i]))
next
vop:=achoice(12,2,20,70,vLong)
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.
joselimatb
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 28 Mai 2007 15:14
Localização: Tubarao-SC

Re: como usar adir()

Mensagem por joselimatb »

Ola Pablo.

Ate testei, mas na horad e copilar aparece o seguinte erros:

sysbol first reference

cpmifreedosmem nanfor.lib
cpmiint86
cpmirealptr
cpmiallocatedosmem
cpmiisprotected
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 usar adir()

Mensagem por Pablo César »

Ate testei, mas na horad e copilar aparece o seguinte erros
Se deu erro na compilação, então não conseguiu testar... Pelo que parece está precisando adicionar a CPMI.LIB
Se você está precisando as libs LFN,NANFOR,LL,CPMI você pode encontrar neste tópico em arquivo anexo zipado: https://pctoledo.org/forum/viewto ... 194#p47194
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
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: como usar adir()

Mensagem por ANDRIL »

Com certeza falta essas libs citadas pelo Pablo, basta adiciona-las no seu script de linkagem.

Essa lib tem a função LF_DIRECTORY() que por sua vez, é exatamente como o aDir() e o Directory() nativos do Clipper. Fiz um teste pensando que iria retornar os nomes de arquivos longos, mais retornou no modo DOS com 8 caracteres.

Por que existe ela entao??? Alguem ja conseguiu retornar nomes longos diretamente atraves dela ou foi só pra encher linguiça nesta lib?

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: como usar adir()

Mensagem por Toledo »

Andril, a função LF_Directory() retorna uma matriz multidimensional com os seguintes elementos:

1º elemento: Nome curto do arquivo
2º elemento: Tamanho do arquivo
3º elemento: Data do arquivo
4º elemento: Hora do arquivo
5º elemento: Atributo do arquivo
6º elemento: Nome longo do arquivo

Veja este exemplo:

Código: Selecionar todos

#include "lfnlib.ch"
PRIV aArqui:={}
aArqui:=LF_Directory("C:\Documents and Settings\Toledo\Meus documentos\*.doc")
FOR i=1 TO LEN(aArqui)
  ? aArqui[i,1], aArqui[i,6]
NEXT
retu
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
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:

Re: como usar adir()

Mensagem por ANDRIL »

Toledo, obrigado pelo esclarecimento.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
joselimatb
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 28 Mai 2007 15:14
Localização: Tubarao-SC

Re: como usar adir()

Mensagem por joselimatb »

Ola, alguem tem "lfnlib.ch" ?

Valeu
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: como usar adir()

Mensagem por Toledo »

Segue em anexo!

Abraços,
Anexos
LFNLIB.zip
Arquivo LFNLIB.CH
(2.37 KiB) Baixado 232 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
joselimatb
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 28 Mai 2007 15:14
Localização: Tubarao-SC

Re: como usar adir()

Mensagem por joselimatb »

Ainda erro

estou copilando : CLIPPER diop
RTLINK FI diop LIB lfn,NANFOR,LL


erros:

symbol First refence
clipper501 nanfor.lib
cpmiisprotected ll.lib
cpmiprotectedptr ll.lib
cpmifreeselector ll.lib


oque esta de errado ?

Valeu
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: como usar adir()

Mensagem por Toledo »

Amigo, segue em anexo a NANFOR para Clipper 5.2.

Compile assim:

CLIPPER diop
RTLINK FI diop LIB LFN,NANFOR52,CPMI

Abraços,
Anexos
NANFOR52.zip
Libs NANFOR52 e CPMI
(72.35 KiB) Baixado 324 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder