ajuda com nome longo de arquivo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

ajuda com nome longo de arquivo

Mensagem por Poka »

Olá a todos


Será que alguem poderia me ajudar?

veja o seguinte exemplo:

x:="Carta Teste.txt"
if ! file(x)
arq:=fcreate(x)
endif
Execute File "Winword" parameters x

o Word diz que nao consegue carregar o arquivo "cartas.doc",
apesar do arquivo estar gravado como CARTA TESTE.TXT

Agradeço qualquer ajuda.

Poka
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, não entendi bem seu post, mas me diz uma coisa vc quer abrir um WORD ? se é isso de uma olhada no link abaixo:
https://pctoledo.org/forum/viewtopic.php?t=6760

E abaixo o que eu acho que vc prescissa:

Código: Selecionar todos

*************************
PROCEDURE Abre_word(cARQ)
*************************
LOCAL oWord,oText

RenameFile( cARQ, "TEMP.DOC" ) //remomeio o WORD
cARQ="TEMP.DOC"

TRY
   oWord := GetActiveObject(  "Word.Application" )
CATCH
   TRY
      oWord := CreateObject( "Word.Application" )
   CATCH
      MsgStop("Não foi Possivel Achar o Word Instalado","Aviso do Sistema")
      RETURN
   END
END

IF !FILE(cARQ)
   MsgStop("Não Foi Localizar e Abrir o Documento de Word")
   RETURN
ENDIF
oWord:Documents:Open(cARQ)  //ABRE O WORD

oWord:Visible := .T. //PARA VISUALIZAR OU NÃO ANTES
oWord:WindowState := 1
oWord:PrintOut()   //PARA IMPRIMIR DIRETO

RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Mensagem por Poka »

Sygecom, obrigado por responder.

A finalidade é para um sistema médico, onde tenho um arquivo com cartas padrao.

Esse arquivo contem os campos, codigo, descricao da carta e um campo memo texto.

Até hoje, essas cartas estao em campo memo, agora estou passando para xharbour/minigui e queria fzer o seguinte.

Arquivo carta com campos codigo e descricao. Exemplo de descricao da carta, "DIETA PARA ACIDO URICO". O medico seleciona a carta desejada, eu queria fazer o seguinte.

xarq:="c:\sim\cartapad\"+cartas->descricao+".txt"

, e com o comando EXECUTE FILE "WINWORD" PARAMETERS xarq o sistema me leva diretamente para dentro do texto e já no diretorio da carta padrão. Era o que eu queria, faz tempo.

Funciona perfeito, mas somente com nome ate 8 cartacteres. Achei que no xharbour não teria esse problema. Mas a ideia de renomear o arquivo, para um nome curto dá certo tambem. Vou fazer assim mesmo. O ideal seria com o nome longo para quando estiver no texto, aparecer o nome correto da carta.

Se tiver alguma solução, agradeço. A rotina acima que voce me passou, não consegui implementar, dá que o Word nao está instalado.Talvez essa rotina aceitasse nome longo.

Um abraço


Poka
Luiz
Usuário Nível 2
Usuário Nível 2
Mensagens: 61
Registrado em: 05 Set 2006 07:30
Localização: Vila Velha - ES

Mensagem por Luiz »

A rotina de acesso OLE funciona beleza com arquivos de nome longo, talves não tenha encontrado seu Word por motivo de versão (como o Rochinha disse no tópico citado)

Eu prefiro utilizar objeto por ele te dar maior controle sobre a aplicação
Porem utilizando a função abaixo você consegue carregar o arquivo.

Código: Selecionar todos

Executa('C:\Arquivos de programas\Microsoft Office\Office\WINWORD.EXE','"Carta Teste.txt"')

function Executa(cExec,cParam,lWait)
local hIN, hOUT, hERR
local hProc, nLen
Local nRet
default(@cParam,'')
default(@lWait,.f.)
  if file(cEXEC)
    hProc := hb_openprocess( cExec+' '+cParam , @hIN, @hOUT, @hERR )
    if lWait
      nRet :=  hb_processvalue( hProc )
    endif  
    fclose( hProc )
    fclose( hIN )
    fclose( hOUT )
    fclose( hERR )
  else
    wait('Arquivo "'+cExec+'" não encontrado')
  endif
return nRet
Importante: note que o parametro '"Carta Teste.txt"' está com envolvido por aspas duplas dentro da string, sem isso ele não irá reconhecer o nome longo.

Abraços
"Ninguém se engane a si mesmo; se alguém dentre vós se tem por sábio neste mundo, faça-se louco para se tornar sábio." (I Coríntios 3:18)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
xHarbour | Gtwvw | HwGui | DBF+CDX | mySQL | Genesis IDE
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Mensagem por Poka »

Luiz, voce falou em aspas duplas?. Então testei assim:

NOMEARQ:="C:\CARTAS\DIETA PARA ACIDO URICO"
EXECUTE FILE "WINWORD" PARAMETERS ´"&NOMEARQ"´

Funcionou beleza.

Valeu

Um abraço

Poka
Responder