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: 20419
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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