Página 1 de 1
como usar adir()
Enviado: 10 Ago 2010 15:29
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
Re: como usar adir()
Enviado: 10 Ago 2010 15:38
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.
como usar adir()
Enviado: 10 Ago 2010 17:26
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.
Re: como usar adir()
Enviado: 10 Ago 2010 20:07
por joselimatb
tem como aparecer o nome e data com hora da criacao ?
como usar adir()
Enviado: 10 Ago 2010 20:49
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)
Re: como usar adir()
Enviado: 11 Ago 2010 14:59
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
como usar adir()
Enviado: 11 Ago 2010 17:23
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
Re: como usar adir()
Enviado: 11 Ago 2010 18:20
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+
Re: como usar adir()
Enviado: 11 Ago 2010 18:50
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,
Re: como usar adir()
Enviado: 11 Ago 2010 19:10
por ANDRIL
Toledo, obrigado pelo esclarecimento.
Ate+
Re: como usar adir()
Enviado: 12 Ago 2010 16:03
por joselimatb
Ola, alguem tem "lfnlib.ch" ?
Valeu
Re: como usar adir()
Enviado: 12 Ago 2010 16:29
por Toledo
Segue em anexo!
Abraços,
Re: como usar adir()
Enviado: 13 Ago 2010 16:12
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
Re: como usar adir()
Enviado: 13 Ago 2010 16:53
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,