Página 1 de 1

Função para gravar arquivos com nomes grandes

Enviado: 30 Out 2007 00:12
por clodoaldomonteiro
Olá!

No xHarbour tem alguma função para copiar ou ler arquivos com nome que tenha mais de 8 caracteres?

Para clipper tem a lib LNF que tem uma série de funções para tratamento de arquivos com nomes grandes.

Grato pela atenção.

Enviado: 30 Out 2007 09:38
por sygecom
O proprio COPY FILE do clipper

Enviado: 30 Out 2007 09:39
por rochinha
Amiguinho

Eu uso Fivewin e uso uma função para retornar o PATHname completo de um arquivo, para tal eu uso:

Código: Selecionar todos

...
cPathCompleto := LFN2SFN( "C:\Nome muito grande de pasta\arq.exe" )
...
Acho que ela faz parte do Harbour e provavelmente possua parte contraria SFN2LFN() que transforma nomes curtos em longos.

Enviado: 30 Out 2007 09:41
por sygecom
OU tmb. pode usar algo assim de dentro da pasta onde esta seu sistema.

aDir1 := curdrive()+":\"+rtrim(curdir()) + "\prg\sistema.exe"

Enviado: 30 Out 2007 09:42
por Eolo
Dá pra fazer direto...

Código: Selecionar todos

a='clientes.dbf' // arquivo 8.3 existente
b='arquivo de clientes.dbf' // LFN
copy file (a) to (b)
use (b) excl new
dbedit()
quit

Enviado: 30 Out 2007 14:43
por rochinha
Amiguinho

Pelo comando que voce passou não sei mas diretamente no DOS ou via comando RUN COPY voce deverá colocar o nome grande entre aspas:

RUN COPY clientes.dbf "arquivo de clientes".dbf

Faça os testes mas atenho a certeza de se funcionasse sempre não haveria o porque a biblioteca LFN.LIB fazer parte de nossa vidas.

Enviado: 30 Out 2007 22:34
por clodoaldomonteiro
Rochinha!

Então eu posso usar a mesma LNF.lib que uso no clipper?
O harbour vai assimilar ela normalmente?

Eolo!
Quer dizer que o comando COPY file TO do harbour usa os comando do DOS 32 bits quando compilamos?

Enviado: 31 Out 2007 01:21
por rochinha
Amiguinho

O que eu quiz dizer é que provavelmente a função LFN2SFN() seja do proprio Harbour, vale tentar, eu só não sei quais LIBs podem conte-la.

Enviado: 31 Out 2007 08:49
por Eolo
Clodoaldo,

Eu tb uso a LFN com o CLipper52 (que parece ser o único jeito de lidar com nomes acima de 8.3), mas não tinha nem tentado nada com o XHarbour.

Seu post me chamou a atenção e eu compilei e rodei o teste acima, só com o XHarbour (sem nenhuma 'LFN.lib'). Funciona normal. Por que funciona, não sei responder... :-)