Página 1 de 1

file() com nomes curtos

Enviado: 05 Out 2007 11:09
por Euclides
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

Enviado: 05 Out 2007 15:05
por sygecom
Tente colocar o caminho completo.
Ex: file("c:\meus_arquivos_\temp\ARQÚIV~1.DOC")

Enviado: 07 Out 2007 14:40
por Euclides
É 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

Enviado: 08 Out 2007 19:35
por sygecom

Código: Selecionar todos

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

Enviado: 23 Out 2007 11:34
por Euclides
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