LER Arquivo com duas extensões, ou arquivo longo, COMO ??
Moderador: Moderadores
LER Arquivo com duas extensões, ou arquivo longo, COMO ??
Pessoal estou com arquivo q a Bemafi32.dll gera eu quero mudar ele de pasta (diretorio) e apagar ele de onde esta, ele esta no C:\ o arquivo existe como nome BE645786.728.RFD, porem o retorno da função é FALSO "arquivo não encontrado"
IF FILE("C:\BE645786.728.RFD")
RETURN(.T.)
ELSE
RETURN(.F.)
ENDIF
pois nunca tiver q ler arquivo com mias de uma extensão ou arquivo longo
eu uso o clipper5.2e BLINKER 7.0
IF FILE("C:\BE645786.728.RFD")
RETURN(.T.)
ELSE
RETURN(.F.)
ENDIF
pois nunca tiver q ler arquivo com mias de uma extensão ou arquivo longo
eu uso o clipper5.2e BLINKER 7.0
O Clipper só consegue "enxergar" arquivos com nomes no formato DOS 8x3. Pra arquivos com nomes longos você precisará de uma biblioteca extra. No meu site tenho a biblioteca LFN. Baixe e teste. Deve resolver o problema.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
desde já muito grato pelo ajuda Maligno, porem
não consegui fazer funcionar coloquei as LIB´s
\CLIPPER52E\LIB\LFN.LIB
\CLIPPER52E\LIB\LL.LIB
\CLIPPER52E\INCLUDE\LFNLIB.CH
\CLIPPER52E\INCLUDE\LFINT86.CH
no meu .LNK
LIB LL
LIB LFN
no fonte
#INCLUDE FTINT86.CH
#INCLUDE LFNLIB.CH
#INCLUDE FILEIO.CH
executei a função das seguintes formas
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok")
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok",16)
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok",32)
aparece o Erro BASE/1001 Undefined function: FT_STOD
vc teria um exemplo para mim ou seberia me falar onde estou fazendo errado?
não consegui fazer funcionar coloquei as LIB´s
\CLIPPER52E\LIB\LFN.LIB
\CLIPPER52E\LIB\LL.LIB
\CLIPPER52E\INCLUDE\LFNLIB.CH
\CLIPPER52E\INCLUDE\LFINT86.CH
no meu .LNK
LIB LL
LIB LFN
no fonte
#INCLUDE FTINT86.CH
#INCLUDE LFNLIB.CH
#INCLUDE FILEIO.CH
executei a função das seguintes formas
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok")
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok",16)
var1 := LF_FCOPY("C:\naoconsigocopiar.aaa.bbb","C:\teste.ok",32)
aparece o Erro BASE/1001 Undefined function: FT_STOD
vc teria um exemplo para mim ou seberia me falar onde estou fazendo errado?
Nunca usei esta LIB. Mas vendo o erro "undefined function FT_STOD" imaginei que fosse necessário incluir a biblioteca NanFor. Lendo o README da LFN confirmei: realmente você precisará da NanFor, que também está no meu site, naquele mesmo diretório. O ZIP é o Nanforum_toolkit. Mas um detalhe: no ZIP da NanFor há um pacote (outra LIB) chamada CMPI, utilizada pelas funções Assembly da biblioteca LL.LIB. Inclua no script. Então são quatro a incluir: LFN, LL, NANFOR e CPMI.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
nome de diretorio e nome de arquivo
CARO MALIGUINO AIDA ESTOU USANDO CLIP 53
estou testando se o diretorio c:\GDRAIS2007\GDRAIS2007.EXE
existe --- o wapi ou tal
ou LF_DIRETORY() -- ACHARIA ESTE ARQUIVO
------- OU NO CLIP53 I - TEM ALGO NOVO
ESTOU USANDO RUN DIR
------------
TEM ALGO FACIL E PRATICO
estou testando se o diretorio c:\GDRAIS2007\GDRAIS2007.EXE
existe --- o wapi ou tal
ou LF_DIRETORY() -- ACHARIA ESTE ARQUIVO
------- OU NO CLIP53 I - TEM ALGO NOVO
ESTOU USANDO RUN DIR
------------
TEM ALGO FACIL E PRATICO
Apesar da pergunta ser para o Maligno, vou tomar a liberdade de responder.
Você deve usar a função LF_ISFILE()
Exemplo :
O segundo parâmetro da função serve para especificar se o que deve ser procurado é um arquivo ou diretório, se .F. deve ser um arquivo, se .T. deve ser um diretório.
Se quiser ver o programinha besta que falei, ele serve para renomear arquivos MP3, fiz ele porque acho um saco ficar renomenado pelo Windows (é muito lerdo) e os arquivos que vem pelo emule vem com cada nome !
www.phrep.com.br/mp3ren.zip
Ah ! Ele ainda toca a música se quiser, mas aí foi uma gambiarra que eu fiz, mas funciona !
)
)
)
)
Até logo.
Marcelo
Você deve usar a função LF_ISFILE()
Exemplo :
Código: Selecionar todos
MDIR="C:\GDRAIS2007\GDRAIS2007.EXE"
IF LF_ISFILE(MDIR,.F.)=.T.
@ 00,00 SAY "Diretório/Arquivo encontrados"
ELSE
@ 00,00 SAY "Tem não !"
ENDIF
ou
MDIR="C:\GDRAIS2007"
IF LF_ISFILE(MDIR,.T.)=.T.
@ 00,00 SAY "Diretório encontrado"
ELSE
@ 00,00 SAY "Tem não !"
ENDIF
Até encontrei uma função que uso num programinha besta que fiz
*------------------------*
FUNCTION VERPASTA(PPESQ)
*------------------------*
IF LF_ISFILE(ALLTRIM(PPESQ),.T.)=.F. // LFN LIB
MSG("Caminho "+ALLTRIM(PPESQ)+" nao encontrado !",2)
RETURN(.F.)
ENDIF
RETURN(.T.)
Se quiser ver o programinha besta que falei, ele serve para renomear arquivos MP3, fiz ele porque acho um saco ficar renomenado pelo Windows (é muito lerdo) e os arquivos que vem pelo emule vem com cada nome !
www.phrep.com.br/mp3ren.zip
Ah ! Ele ainda toca a música se quiser, mas aí foi uma gambiarra que eu fiz, mas funciona !
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
RESP
*** COLOQUEI ASSIM E DEU CERTO ****
**** PERGUNTA ?? ISSO E SOLUÇÃO DIGNA ?? ABSOLETA, SEJA ??
**** PERGUNTA ?? ISSO E SOLUÇÃO DIGNA ?? ABSOLETA, SEJA ??
Código: Selecionar todos
ANO_BASE:= '2007'
DIR_LER:= 'C:\'
DIR_PESQ:= 'GDRAIS2007'
ARQ_PESQ:= 'GDRAIS2007.EXE'
DIR_RAIS:= '?'
function FACHARAIS
ACHEI:= .F.
tst_dir1:= 'C:\TST_DIR1.DAT'
tst_dir2:= 'C:\TST_DIR2.DAT'
ERASE(TST_DIR1)
ERASE(TST_DIR2)
*-----------------
ARQ_PESQ2:= DIR_LER+DIR_PESQ+'\'+ARQ_PESQ
CMD_RAIS1:= 'CMD.EXE /C DIR '+ARQ_PESQ2+' /B > '+TST_DIR1
RUN &CMD_RAIS1
arq_ler:= memoread(TST_DIR1)
linha_PESQ:= upper(alltrim(memoline(arq_ler,80,1,1,.t.) ) )
IF LINHA_PESQ = ARQ_PESQ
ACHEI:= .T.
DIR_PESQ2:= DIR_LER+DIR_PESQ+'.*'
CMD_RAIS2:= 'CMD.EXE /C DIR '+DIR_PESQ2+' /AD /X > '+TST_DIR2
RUN &CMD_RAIS2
arq_ler:= memoread(TST_DIR2)
t_linhas:= mlcount(arq_ler,80,1,.t.)
for i = 1 to t_linhas
linha:= upper(alltrim(memoline(arq_ler,80,i,1,.t.) ) )
POS1:= at(' <DIR> ',linha)
POS2:= at(DIR_PESQ,linha)
if POS1 > 0 .and. POS2 > 0
T_LINHAS:= T_LINHAS + 100
LINHA:= ALLTRIM(SUBSTR(LINHA,POS1+7,80))
POS2:= AT(' ',LINHA)
LINHA:= ALLTRIM(SUBSTR(LINHA,1,POS2))
DIR_RAIS:= DIR_LER+LINHA
endif
next
endIF
return(ACHEI)Prezado Colega.
Digna ? Sim, na minha opnião sim, já que ela funciona, só usa mais código além de maior uso de memória, mas não deixa de ser uma solução.
Obsoleta ? Sim. Pois a LFN LIB veio justamente pra suprir essa necessidade.
Mas se ela funciona e te dá o resultado esperado é válida.
Exemplo :
Digna ? Sim, na minha opnião sim, já que ela funciona, só usa mais código além de maior uso de memória, mas não deixa de ser uma solução.
Obsoleta ? Sim. Pois a LFN LIB veio justamente pra suprir essa necessidade.
Mas se ela funciona e te dá o resultado esperado é válida.
Exemplo :
Código: Selecionar todos
FOR I=0 TO 24
@ I,00 CLEAR TO I,79
NEXT
ou
CLS
Dão o mesmo resultado, só que usam maneiras diferentes para fazer isso, como diria Napoleão Bonaparte "cada um com seu cada um..."
Até logo.
MarceloProgramador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Tonyx, eu não testei seu exemplo, mas pelo que me parece isso não irá funcionar em WIN98. Bom seria aprsentar algo que funcionasse em qualquer versão do Windows. Mas a idéia de utilizar o comando DIR do DOS com opção /S para opção de procura é rudimentar mas funciona.
Acho que sempre é válido buscar onde se pressume estar determinado arquivo e sel ele não estiver lá, daí dar uma opção ao usuário de busca no disco inteiro. Claro que desta forma seria uma operação que demoraria um pouco a ser obtetido.
Outra forma de comparar de dentro da aplicação Clipper, seria transformar esse nome longo em nome curto.
Obs.: Tonyx, tenho a impressão que você não está re-avaliando a variável ACHEI no seu código exemplo. PERDÃO, agora ví que SIM. (desconsidere esta OBS)
Acho que sempre é válido buscar onde se pressume estar determinado arquivo e sel ele não estiver lá, daí dar uma opção ao usuário de busca no disco inteiro. Claro que desta forma seria uma operação que demoraria um pouco a ser obtetido.
Outra forma de comparar de dentro da aplicação Clipper, seria transformar esse nome longo em nome curto.
Obs.: Tonyx, tenho a impressão que você não está re-avaliando a variável ACHEI no seu código exemplo. PERDÃO, agora ví que SIM. (desconsidere esta OBS)
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.
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.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Vendo a LIB apresentada pelo colega Marcelo em https://pctoledo.org/forum/viewtopic.php?t=7549 ví que tem umas funções de procura com exemplos (veja o NG que acompanha) como LF_FINDFIRST, FINDNEXT, ISFILE.... que possam servir o mesmo propósito.
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.
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.



