Página 1 de 2
Funções de baixo Nivel com problema?
Enviado: 15 Out 2015 09:33
por asimoes
Pessoal,
A minha compilação é do dia 12/10 (fork)
O que está errado neste código?
Quando faz o fwrite grava somente uma linha, sobescreve não inclui uma nova linha, está faltando alguma coisa?
Código: Selecionar todos
IF !hb_FileExists(hb_DirBase()+"teste.txt")
nHandle:=fCreate(hb_DirBase()+"teste.txt")
ELSE
nHandle:=fOpen(hb_DirBase()+"teste.txt",1)
ENDIF
fWrite(nHandle,hb_Dtoc(Date(),"DD/MM/YYYY")+" "+Time()+hb_Eol())
fClose(nHandle)
Funções de baixo Nivel com problema?
Enviado: 15 Out 2015 09:56
por asimoes
Não havia problema, faltou o fseek
Código: Selecionar todos
IF !hb_FileExists(hb_DirBase()+"teste.txt")
nHandle:=fCreate(hb_DirBase()+"teste.txt")
ELSE
nHandle:=fOpen(hb_DirBase()+"teste.txt",1)
ENDIF
FSeek(nHandle, 0, 2) //Vai pro final do arquivo
fWrite(nHandle,hb_Dtoc(Date(),"DD/MM/YYYY")+" "+Time()+hb_Eol())
fClose(nHandle)
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 13:53
por microvolution
Prezado professor
asimoes aproveitando seu post que vc abriu e o já fechou em seguida e, para não ter que abrir outro (caso seja necessário o farei), tenho uma dúvida quanto à função HB_DIRBASE(). Vejamos:
Tenho as seguintes pastas (nomes fictícios) no meu sistema:
C:\SISTEMA
C:\SISTEMA\EMPRESA\
C:\SISTEMA\EMPRESA\BANCOdeDADOS
C:\SISTEMA\TEMP
Quando o usuário efetua LOGIN o sistema seta a pasta da empresa escolhida e vai para C:\SISTEMA\EMPRESA\BANCOdeDADOS, ou seja, se eu usar o HB_DIRBASE() para verificar o caminho será o informado neste parágrafo.
Quando quero que o usuário leia alguma coisa durante a execução do programa (antes de conhecer a função HB_DIRBASE()) eu fazia assim (exemplo só para fins didáticos):
Bom, usando o HB_DirBase() estou fazendo agora assim (já que está setado no C:\SISTEMA\EMPRESA\BANCOdeDADOS), mudando também do comando RUN para a função HB_RUN ():
HB_RUN ( "Start "+ "NOTEPAD" + HB_DIRBASE() +"\...\..\TEMP\arquivoTexto.TXT")
Bom vamos aos resultados:
No Win 10 (64 bits) isso funciona corretamente.
Mas no Win XP (32 bits), não aceita o "...\..\".
Alguém tem alguma ideia, pois não encontrei nenhuma explicação melhor sobre o hb_dirBase()?
PS: meu harbour é o 3.4.x junto com a GTWVG.
Gracias!!!
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 14:15
por asimoes
A função hb_DirBase() coloca uma "\" no final ai está o seu erro.
ex.:
Certo:
if File(hb_DirBase()+"pasta\teste.txt"
Errado:
if File(hb_DirBase()+"\pasta\teste.txt")
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 14:36
por microvolution
Então veja se entendi. No meu caso estou pensando que está fazendo assim:
HB_DIRBASE()+"...\..\TEMP\arquivo.TXT" sendo que na verdade está é assim?
HB_DIRBASE()+"\..\..\TEMP\ARQUIVO.TXT.
Se está assim, por que no Win 10 funciona e no Win XP dá erro?
Então, qual desses abaixo devo usar para funcionar em conjunto com o "..\..\pasta"?
HB_DirBase() is equivalent to :
LEFT( ExeName(), RAT( '\', ExeName() ) )
and
HB_FNameDir( ExeName() )
and
cExeDir := ''
HB_FNameSplit( ExeName(), @cExeDir )
Vlw prezado professor e demais colegas!
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 14:54
por asimoes
Vamos lá, a primeira pergunta qual é a pasta que seu sistema roda?
A função hb_DirBase() pega o caminho onde o seu sistema está rodando.
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 14:57
por asimoes
ex.:
A pasta onde o meu sistema (sistema.exe) roda é d:\sistemas\bin
d:\sistemas\bin\sistema.exe
hb_DirBase() retorna:
d:\sistemas\bin\
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 14:58
por asimoes
Você pode também:
No seu sistema informar onde ele está rodando no XP e win10
Alert(hb_DirBase())
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 15:03
por JoséQuintas
Adicionar mais uma pergunta:
Quer saber a pasta do EXE, ou atual?
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 15:07
por microvolution
asimoes escreveu:Vamos lá, a primeira pergunta qual é a pasta que seu sistema roda?
prezado professor, isso já está respondido na minha primeira mensagem deste tópico, mas, como V.Sa. sempre está disposto a nos ajudar, ratifico:
Preciso fazer aquele comandinho que usávamos muito no MSDOS:
Ou seja, o MSDOS (CMD) se eu estiver dentro da pasta do meu aplicativo: "C:\SISTEMA\EMP\BANDOdeDADOS" e fizer um CD ..\..\ ele vai para a pasta:
Como você mesmo me clareou o HB_DIRBASE() coloca uma "\" barra no final e então o "..\..\TEMP" não funciona corretamente.
Agora vai entender o "porquê" que no Win 10 (64 bits) aceita mesmo assim com a "barra" e no win xp não aceita...
rsrsrs

)
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 15:31
por asimoes
De Paula,
Vamos lá:
O correto é:
HB_RUN ( "Start "+ "NOTEPAD " + HB_DIRBASE() +"..\..\TEMP\arquivoTexto.TXT")
No seu post não tem um espaço depois do NOTEPAD
Obs.: Simulei a sua pasta aqui no meu notebook que é win10 acredito que no XP vai funcionar também.
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 16:00
por microvolution
asimoes escreveu:Obs.: Simulei a sua pasta aqui no meu notebook que é win10 acredito que no XP vai funcionar também.
prezado é issto que estou tentando explicar desde o início...
acredito que no XP vai funcionar também
Mas, não funciona...
rsrs
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 16:14
por asimoes
De paula,
No windows 10 funciona ok.
No xp não, simule no prompt no Xp a chamada do notepad
Você verificou o espaço que tem que ter depois do notepad no comando hb_run?
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 16:32
por microvolution
Prezado(s) veja(m) o prtscreen que fiz da tela do win xp (neste exato momento):
Agora, o mesmo aplicativo rodando no Win10:
Bom, agora deu pra ter certeza do que eu já tinha certeza?
... estou estudando 2 funções do harbour que chamam-se:
ExeName() e Rat().
Vou fazer um teste e se der certo posto o resultado e como fiz... ok pessoal?
Funções de baixo Nivel com problema?
Enviado: 17 Jan 2016 16:50
por JoséQuintas
Esse gosta de complicar.
Parece até brincadeira.