Funções de baixo Nivel com problema?

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Funções de baixo Nivel com problema?

Mensagem 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):

Código: Selecionar todos

RUN C:\SISTEMA\TEMP\arquivoTexto.TXT
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!!!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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")
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Funções de baixo Nivel com problema?

Mensagem 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!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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\
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem por asimoes »

Você pode também:

No seu sistema informar onde ele está rodando no XP e win10

Alert(hb_DirBase())
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Funções de baixo Nivel com problema?

Mensagem por JoséQuintas »

Adicionar mais uma pergunta:
Quer saber a pasta do EXE, ou atual?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Funções de baixo Nivel com problema?

Mensagem 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:

Código: Selecionar todos

C:\SISTEMA\EMP\BANDOdeDADOS
Preciso fazer aquele comandinho que usávamos muito no MSDOS:

Código: Selecionar todos

cd ..\..\TEMP
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:

Código: Selecionar todos

C:\SISTEMA\TEMP
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 :))
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Funções de baixo Nivel com problema?

Mensagem 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
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Funções de baixo Nivel com problema?

Mensagem 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?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Funções de baixo Nivel com problema?

Mensagem por microvolution »

Prezado(s) veja(m) o prtscreen que fiz da tela do win xp (neste exato momento):
16-0117 - arquivo nao abre no WXP.JPG
Agora, o mesmo aplicativo rodando no Win10:
16-0117 - arquivo nao abre no W10.jpg
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?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Funções de baixo Nivel com problema?

Mensagem por JoséQuintas »

Esse gosta de complicar.
Parece até brincadeira.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder