Página 4 de 4

Salvar screen

Enviado: 01 Jun 2012 10:18
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 ?

Salvar screen

Enviado: 01 Jun 2012 13:55
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

Salvar screen

Enviado: 01 Jun 2012 14:57
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 ?

Salvar screen

Enviado: 01 Jun 2012 15:06
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 ?

Salvar screen

Enviado: 01 Jun 2012 15:33
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...

Salvar screen

Enviado: 01 Jun 2012 15:47
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

Salvar screen

Enviado: 01 Jun 2012 15:57
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)...

Salvar screen

Enviado: 01 Jun 2012 16:06
por bencz
Então, eu deveria salvar x := savescreen(0,0,9,29)

??

Salvar screen

Enviado: 01 Jun 2012 16:32
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... ;)

Salvar screen

Enviado: 01 Jun 2012 17:03
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

Salvar screen

Enviado: 01 Jun 2012 18:30
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ç...

Salvar screen

Enviado: 04 Jun 2012 09:21
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

Salvar screen

Enviado: 07 Jun 2012 21:34
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

Salvar screen

Enviado: 08 Jun 2012 09:38
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