Salvar screen

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

Moderador: Moderadores

Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Salvar screen

Mensagem por bencz »

Sim, tentei fazer usar isso, mas da o mesmo problema ;/

Código: Selecionar todos

Wvw_savescreen()
Wvw_loadscreen()
Como posso usar essas funções ?
Imagem
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Salvar screen

Mensagem por JoséQuintas »

O SaveScreen salva no formato Letra + Cor.
E a tela toda numa sequência única.
Vai precisar remover o caractere de cores, e dividir as linhas
Não testei, mas seria mais ou menos isto:

Código: Selecionar todos

Function SalvaTelaEmDisco()
Local TelaComCor, TelaSemCor, TelaEmTxt, nLenLinha, nCont

TelaComCor := SaveScreen()
TelaSemCor := ""
TelaEmTxt := ""
nLenLinha := MaxCol()+1

For nCont = 1 To Len(TelaComCor) Step 2
   TelaSemCor += Substr(TelaComCor,nCont,1)
Next

For nCont = 1 To Len(TelaSemCor) Step nLenLinha
   TelaEmTxt += Substr(TelaSemCor,nCont*nLenLinha-1,nLenLinha) + Chr(13) + Chr(10)
Next
HB_MemoWrit("tela.txt",TelaEmTxt)
Return NIL
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/
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Salvar screen

Mensagem por Pablo César »

Não adianta José, parece que em decorrência do comando WVW_nOpenWindow("MEU TESTE",10,20,20,50) que estaria abrindo uma seção janelada não padrão, isto é de 10 linha por 50 colunas, estaria triplicando em partes a exibição dos caracteres na tela quando salva essa tela em arquivo. Pode mesmo pode conferir neste tópico o bencz disponibilizou o arquivo que foi gravado com SAVE TO.

A minha sugestão é reconfigurar a seção que quer dar o PrintScreen, deixá-la para normal (25x80) gravar e dai se quiser deixar menor. Eu por exemplo no aplicativo Stru.exe que disponibilizei aqui no fórum, setei a tela console para SETMODE(25,40), será que não serviria essa configuração para exibição Bencz ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Salvar screen

Mensagem por Pablo César »

Outra indicação que daria é fazer um aplicativo GUI que tire o PrintScreen de forma gráfica. Tem um exemplo em Minigui disponível que poderia adaptar: C:\MiniGUI\SAMPLES\Applications\ScreenshotMaker

Pergunto: para que seria esses PrintScreen Bencz ? Qual a finalidade ?
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Salvar screen

Mensagem por Imatech »

Olá Pablo ...

Faça a seguinte simulação...

SETMODE( 10, 30 )

Depois observe o resultade de:

x := savescreen( 0, 0, maxrow(), maxcol() ) /* equivalente a: savescreen( 0, 0, 10, 30 ) */

depois:

x := savescreen( 0, 0, 24, 79 ) /* AQUI O BUG DO USUARIO */


A coisa esta obvia: o erro é na forma em a tela esta sendo salva...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Salvar screen

Mensagem por Pablo César »

Você quis dizer que o Bencz está salvando a tela maior do que ela suporta ?

Pois na tela aparece 25 linhas e 80 colunas
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Salvar screen

Mensagem por Imatech »

Olá Pablo...

A tela em referencia (ativa) é somente 10 x 30 - criada na função wvw_show... 10 20 20 50 (ou quase isso)

A tela em 2º plano sim: é 25 x 80 (porem não é considerada no oCRT ativo)...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Salvar screen

Mensagem por bencz »

Então, eu deveria salvar x := savescreen(0,0,9,29)

??
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Salvar screen

Mensagem por Imatech »

Olá bencz ....


Sim: Estou tentando lhe informar isso a 2 páginas atraz... kkk



x := savescreen( 0, 0, maxrow(), maxcol() ) /* equivalente a: savescreen( 0, 0, 9, 29 ) */



Sucesso... ;)
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Salvar screen

Mensagem por bencz »

Bom, mas se vc pegar o meu código, jah esta isso nele...
dês de q eu postei esse tópico xD
Imagem
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Salvar screen

Mensagem por Imatech »

Olá bencz...


Blz... então para nossa curiosidade... poderia subir novo arquivo.txt com esses parâmetros (sem uso de função de tratamento de tela) ?


Abç...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Salvar screen

Mensagem por bencz »

Claro... (:

Código: Selecionar todos

                                OLA MUNDO                      lalas             OLA MUNDO                      lalas                                  25        lalas                                  25                           80                  25                           80                       ---------               80                       ---------                                        ---------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
e o código q eu utilizei foi esse:

Código: Selecionar todos

Function Main()
  WVW_SetMainCoord( .t. )
  WVW_nOpenWindow("MEU TESTE",10,20,20,50)

  @ 11,21 SAY "OLA MUNDO"
  @ 12,21 SAY "lalas"
  @ 13,21 SAY MAXROW()+1
  @ 13,50 say MAXCOL()+1
  @ 15,21 SAY "---------"

  x := SaveScreen(0,0,maxrow(),maxcol())
  save screen to x
  wait
  @ 11,21 clear to 15,79
  ? "limpou"
  wait
  restscreen(,,,,x)
  setpos(18,00)
  ? "restaurou"

  memowrit("teste.txt", x)

  WAIT 
Return
Imagem
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Salvar screen

Mensagem por Hasse »

Módulo testado e funcionando:

Código: Selecionar todos

FUNCTION Main()
*
*
cScreen   := SaveScreen()
nStart    := 1                  
nRange    := ( Maxcol()+1 ) * 2
*
nFhandle:= Fcreate( "_LogFile.txt", 0 )
*
*------------------------------------ Cópia da TELA ---------------------------
*
FWriteLine( nFhandle,  '' )
FWriteLine( nFhandle, Padc( ' Copia da Tela ', 83, '*' ) )
FWriteLine( nFhandle,  '' )
FWriteLine( nFhandle,  'Ú' + Replicate('Ä',Maxcol()+3) + '¿' )
*
cScreen := HB_OemToAnsi( cScreen )
*
FOR nCount:= 1 TO Maxrow()
   *
   cOutString := ''
   cSubString := SUBS( cScreen, nStart, nRange )
   *
   FOR nForLoop:= 1 TO nRange step 2
      *
      cOutString += SUBS( cSubString, nForLoop, 01 )
      *
   NEXT
   *
   FWriteLine( nFhandle, '³ '+cOutString+' ³' )
   nStart += nRange
   *
NEXT
*
FWriteLine( nFhandle, 'À' + Replicate('Ä', Maxcol()+3) + 'Ù' )
*
Fclose( nFhandle )
*
*--------------------------------------------------------------------------------------------------
Static Function FWriteLine( nHandle, cString )

Fwrite( nHandle, cString )
Fwrite( nHandle, chr(13) )
Fwrite( nHandle, chr(10) )

Return Nil
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

Salvar screen

Mensagem por bencz »

Bom dia (:

Bom... veja, se eu deixar o comando

Código: Selecionar todos

WVW_SetMainCoord( .t. )
Como true, ele cria um LogFile assim:

Código: Selecionar todos


********************************** Copia da Tela **********************************

ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³                                 OLA MUNDO                      lalas             ³
³  OLA MUNDO                      lalas                                  25        ³
³  lalas                                  25                           80          ³
³          25                           80                       ---------         ³
³        80                       ---------                                        ³
³  ---------                                                                       ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
³                                                                                  ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Bom, e se eu deixo como false, ele cria a janela do tamanho certo, mas, nada aparece nessa janela :/

Código: Selecionar todos

FUNCTION Main()
   WVW_SetMainCoord( .t. )
   WVW_nOpenWindow("MEU TESTE",10,20,20,50)
    
   @ 11,21 SAY "OLA MUNDO"
   @ 12,21 SAY "lalas"
   @ 13,21 SAY MAXROW()+1
   @ 13,50 say MAXCOL()+1
   @ 15,21 SAY "---------"
     
   Teste()
   wait
return nil

FUNCTION Teste()
*
*
cScreen   := SaveScreen()
nStart    := 1                  
nRange    := ( Maxcol()+1 ) * 2
*
nFhandle:= Fcreate( "_LogFile.txt", 0 )
*
*------------------------------------ Cópia da TELA ---------------------------
*
FWriteLine( nFhandle,  '' )
FWriteLine( nFhandle, Padc( ' Copia da Tela ', 83, '*' ) )
FWriteLine( nFhandle,  '' )
FWriteLine( nFhandle,  'Ú' + Replicate('Ä',Maxcol()+3) + '¿' )
*
cScreen := HB_OemToAnsi( cScreen )
*
FOR nCount:= 1 TO Maxrow()
   *
   cOutString := ''
   cSubString := SUBS( cScreen, nStart, nRange )
   *
   FOR nForLoop:= 1 TO nRange step 2
      *
      cOutString += SUBS( cSubString, nForLoop, 01 )
      *
   NEXT
   *
   FWriteLine( nFhandle, '³ '+cOutString+' ³' )
   nStart += nRange
   *
NEXT
*
FWriteLine( nFhandle, 'À' + Replicate('Ä', Maxcol()+3) + 'Ù' )
*
Fclose( nFhandle )
*
*--------------------------------------------------------------------------------------------------
Static Function FWriteLine( nHandle, cString )

Fwrite( nHandle, cString )
Fwrite( nHandle, chr(13) )
Fwrite( nHandle, chr(10) )

Return Nil
Imagem
Responder