Clipper On Line • Ver Tópico - Teste de stream no windows

Teste de stream no windows

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

Moderador: Moderadores

 

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 00:49

Pessoal, uma rotina que criei está funcionando perfeitamente no Linux mas no Windows dá um problema. O Harbour que tenho aqui é meio antigo, foi o que veio com a HMG, portanto é de 2016 e o do Linux é de 2019. Daria para alguém que tivesse um Harbour (windows) mais novo testar essa rotina ?

Basicamente o que ela faz é ler uma imagem no próprio executável e depois salva.
Eu vou postar um teste com o trecho isolado:


FUNCTION Main()

    MemoWrit( "novo.jpg" , Imagem() )

    RETURN NIL

FUNCTION Imagem()

  LOCAL cReturn := ""

#ifdef __PLATFORM_WINDOWS__
#pragma __streaminclude "imagem\01.jpg" | cReturn := %s
#else
#pragma __streaminclude "imagem/01.jpg" | cReturn := %s
#endif
 
RETURN cReturn



Zip com a imagem 01.jpg incluída.

stream.zip
(47.82 KiB) Baixado 49 vezes


Agradeço a ajuda!
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 00:52

Complementando...

A imagem gerada (novo.jpg) deverá ser vista sem falhas. Aqui no Windows só salva a dimensão dela, mas a imagem em si não. Tomara que seja a versão do Harbour...
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 28 Jun 2020 04:26

 #pragma __binarystreaminclude "image\xx.jpg"   | RETURN %s
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 08:16

Não deu certo.
Pode ser a função que faz a escrita (MemoWrit, que foi criada para manipular textos) ou o harbour que eu tenho aqui que, como falei, é de 2016 (no Linux funciona mesmo com Memowrit).

Por isso eu pedi para testarem.
Se alguém puder testar essa rotina eu agradeço.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 28 Jun 2020 12:22

Testou com retorno direto, sem variável?
Uso do jeito que mostrei normalmente, pra imagens de qualquer tipo e/ou DLL e/ou qualquer coisa.
Na gravação, é lógico, uso hb_MemoWrit() pra que não seja acrescentado control-z no final.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 12:45

Testei com memowrit e hb_memowrit. Não funcionou. No Linux funciona com as duas funções.

Quintas, qual a versão do harbour q vc usa ?
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 28 Jun 2020 15:07

3.4

Colocou do jeito que mostrei, com BINARY ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 16:14

Sim. Não funcionou.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor Vlademiro » 28 Jun 2020 16:14

Vou pegar uma versão mais nova do harbour.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 28 Jun 2020 19:46

Mais uma coisa: Uso MINGW no Windows
Não sei se pode estar relacionado ao compilador C.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Teste de stream no windows

Mensagempor Vlademiro » 29 Jun 2020 04:15

Quintas,

Funcionou conforme vc informou.

O meu teste ficou assim :

FUNCTION Main()

    HB_MemoWrit( "novo.jpg" , Imagem() )

    RETURN NIL

FUNCTION Imagem()

  LOCAL xReturn := ""

#pragma __binarystreaminclude "imagem\01.jpg"   | xReturn := %s
 
RETURN xReturn


A variável xReturn nem precisava, é porque eu gosto de verificar algum possível erro depois da operação. Na rotina posso ver o tamanho dela, por exemplo.

Mas o que aconteceu, afinal ?

Eu que estava errando a diretiva.
Não é __PLATFORM_WINDOWS__
Mas sim __PLATFORM__WINDOWS

Como estava informada errada, o programa sempre pegava a definição para Linux, que não estava alterada para binary.

Na verdade, não precisa da diretiva. O Harbour converte automaticamente.
Fiz o teste com :

#pragma __binarystreaminclude "imagem/01.jpg"   | cReturn := %s 


Repare que só mudou a barra (que é no padrão *NIX) e também funcionou no Windows.

Agora, interessante é que no Linux não precisei usar __binarystreaminclude nem Hb_Memowrit. Vou alterar o código aqui para que funcione nos dois.

Obrigado!
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor Poka » 29 Jun 2020 14:06

Vlademiro, boa tarde

Qual a real finalidade dessa função?

Poka
Avatar de usuário

Poka
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 513
Data de registro: 25 Out 2004 21:26
Cidade/Estado: Leme/SP
Curtiu: 0 vez
Mens.Curtidas: 23 vezes

Teste de stream no windows

Mensagempor Vlademiro » 29 Jun 2020 15:14

Poka, essa função serve para várias finalidades. Ela serve para "embutir" no seu aplicativo arquivos de qualquer espécie.

Pelo que eu entendi o Quintas usa para mandar a DLL "dentro" do seu aplicativo e, lá no cliente, verifica se a DLL existe com FILE, se não existir "escreve" ela com hb_Memowrit. Nunca tinha pensado nesse uso, mas é bem legal, porque se alguém apagar a DLL o programa cria de novo porque o binário está dentro dele.

Eu já embuti arquivos xml na minha aplicação, páginas web, imagens e outros.

Agora, ela não é bem uma função. Não sei bem o nome que dá, porque ela funciona em tempo de compilação (como um #define).
Vc compila seu aplicativo e "embute" o que quiser dentro da sua aplicação.

É como se fosse um "resource", só que é do próprio Harbour, funciona em qualquer plataforma e aceita qualquer arquivo.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 29 Jun 2020 16:41

Vlademiro escreveu:Pelo que eu entendi o Quintas usa para mandar a DLL "dentro" do seu aplicativo e, lá no cliente, verifica se a DLL existe com FILE, se não existir "escreve" ela com hb_Memowrit.


Exato.
Uso de ícones 11MB.
Se uso 11MB pra tranqueira, porque não mais 3MB em coisas úteis?

29/06/2020 16:39 3.181.437 ze_resource.o
29/06/2020 16:39 11.000.293 ze_resource.c
29/06/2020 16:39 11.119.618 jpa.reso

29/06/2020 16:39 6.545.328 jpa.exe
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Teste de stream no windows

Mensagempor JoséQuintas » 29 Jun 2020 16:48

E se der pra registrar automático a DLL do MySQL.... vai junto também.

Por enquanto:

capicom.dll
msxml5.dll
msxml5r.dll
rmchart.dll
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18155
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 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