Clipper On Line • Ver Tópico - file() com nomes curtos

file() com nomes curtos

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

 

file() com nomes curtos

Mensagempor Euclides » 05 Out 2007 11:09

Olá pessoal!
Tenho algumas dificuldades para guardar em campos de arquivos os nomes de documentos e por isso, estou utilizando a função LFN2SFN (só funciona direito a partir da versão 2.4).
Só que se nas primeiras posições do nome do arquivo tiver um vogal acentuado, (ex: ARQÚIV~1.DOC) o FILE("ARQÚIV~1.DOC") retorna .F.
embora o arquivo esteja lá e as rotinas de ShellExecute e OLE abram normalmente.
Alguém já pasou por isso ?
[]´s
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 05 Out 2007 15:05

Tente colocar o caminho completo.
Ex: file("c:\meus_arquivos_\temp\ARQÚIV~1.DOC")
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor Euclides » 07 Out 2007 14:40

É Leonardo... não é tão fácil assim...
Na verdade, eu faço assim: Guardo o nome do arquivo...

ARQ->campo:=lfn2sfn(cGetFile32( "MsWord (*.doc)| *.doc", "Selecione", 1, "C:", .F., 1))

...depois em outra ocasião, verifico se ela existe e faço abrir no MSWord.

if file(ARQ->campo)
ShellExecute( 0, 'Open', cFile,,,1)
else
MsgInfo(cFileName(cFile), "Não Encontrado") // apresenta só o nome do arquivo
endif

O file(), nunca vai ´achar´ um arquivo com vogais acentuados, mas se eliminar o IF FILE(cFile), o ShellExecute abre o MSWord normalmente.
É o que estot fazendo agora... mas não é muito seguro...
Grato pelo intertesse
Euclides
Editado pela última vez por Euclides em 23 Out 2007 10:14, num total de 1 vezes
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Mensagempor sygecom » 08 Out 2007 19:35

Procedure OpenDoc( cDoc )  // ABRE WORD
Local oWord
Local oTexto
oWord:=TOleAuto():New( "Word.Application" )
IF EMPTY(cDoc)
    RETURN
ENDIF
oWord:Documents:Open( cDoc )
oWord:Visible := .T.
oWord:Set( "WindowState", 1 ) // Abre Maximizado
Return
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Mensagempor Euclides » 23 Out 2007 10:34

Olá gente...
Eu estava ´na luta´ e não pude chegar antes...
Editei o meu POST anterior porque tinha um erro:
Isso não funciona: ARQ->campo:=cfile=lfn2sfn(cGetFile32( "MsWord (*.doc)| *.doc", "Selecione", 1, "C:", .F., 1))

A função: file("ÁRQUIVO.TXT") não vai ´achar´ o arquivo ÁRQUIVO.TXT, mesmo que ela ´embaixo do nariz´ (deve ser resquício dos caracteres inválios em nomes de arquivos do DOS)

Um fato curioso é que no SERVER 2003, o arquivo ÁRQUIVO.TXT é ´tradizido´ pela função lfn2sfn() em RQUIVO~1.TXT, que é ´encontrado´ pela função file()... coisas da vida.
Até mais...
Euclides
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes




Retornar para FiveWin

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro