Notícias:

SMF - Just Installed!

Menu principal

Postagens recentes

#51
Lista de Bugs / Re:ppdf como codificar em UTF8...
Última postagem por adalberto - Dezembro 20, 2017, 04:15:47 PM
Que bom que deu certo.

Pelo que tenho pesquisado, o formato pdf não usa a codificação utf8 e sim outra codificação. Vou dar mais uma estudada nesse assunto.

Não consegui inserir imagens nessa lib fpdf, dá um erro, mas acho que vale a pena tentar melhorá-la e implementar novas funções nela que começar outra do zero.
#52
Lista de Bugs / Re:ppdf como codificar em UTF8...
Última postagem por rafael - Dezembro 20, 2017, 12:07:14 AM
Cara, salvou a pátria agora!

No começo vi que tinha muita coisa em inglês e logo resolvi traduzir.

Já tem várias funções prontas.

O código que fiz do outro PPDF deu pra portar sem problemas só um CtrlC + CtrlV

https://uploaddeimagens.com.br/imagens/captura_de_tela_de_2017-12-20_02-02-31-png
https://uploaddeimagens.com.br/imagens/captura_de_tela_de_2017-12-20_02-04-15-png

Não vou postar ela agora porque vou incluir o código de barras nesta biblioteca.

Quando terminar eu posto.
#53
Lista de Bugs / Re:ppdf como codificar em UTF8...
Última postagem por adalberto - Dezembro 19, 2017, 09:21:25 AM
Ainda estou em busca de uma lib pdf em C que aceita utf8 e que seja portável.

Encontrei uma, mas até hoje não consegui reproduzir caracteres utf8 nela em C, falta de tempo para testá-la de modo aprofundado.

Há uma outra lib em código puro Lua que gera saída utf8, mas ela não gera imagem e nem código de barra. Eu apenas modifiquei as palavras chave (if, end, function etc) para prisma, os nomes de variáveis estão como no original luafpdf.lua

Segue em anexo fpdf.pris  + teste para vc dar uma analisada.

(Ainda vou tentar criar uma lib em C com mais suporte, nas férias terei mais tempo para isso)

#54
Lista de Bugs / ppdf como codificar em UTF8 ?
Última postagem por rafael - Dezembro 18, 2017, 04:37:33 PM
Boa tarde a todos,

Tive numa aventura criando uma biblioteca de código de barras pra usar com ppdf e só agora no final que me dei conta que ele só aceita ascii.

Queria saber se tem como adicionar uma função para codificar texto em UTF-8 ?

o código é em C e de C eu não entendo nada.


https://uploaddeimagens.com.br/imagens/captura_de_tela_de_2017-12-18_18-34-34-png


#55
Publique aqui / json.codvisual()
Última postagem por rafael - Dezembro 12, 2017, 11:51:04 PM
Boa noite,

Eu uso muito o json por conta do javascript e muitas vezes preciso ler os dados então pra ficar mais legível modifiquei a função json.cod()

Quem quiser aprimorar fique a vontade


funcao json.codvisual(obj, as_key)
  local s = {}  // We'll build the string as an array of strings to be concatenated.
  local kind = kind_of(obj)  // This is 'array' if it's an array or type(obj) otherwise.
  n = 0
  t = 0
  se kind == 'array' entao
    se as_key entao retorne falso, ('Não é possível codificar uma matriz como uma chave.') fim
   // n = n + 1

    s[#s + 1] = '[\n'
    para i, val em ipares(obj) inicio
t = t + 1
      se i > 1 entao s[#s + 1] = ', \n'  fim
      s[#s + 1] = json.codvisual(val)
    fim
    s[#s + 1] = '\n]'
  senaose kind == 'tabela' entao
    se as_key entao retorne falso, ('Não é possível codificar tabela como uma chave.') fim
    s[#s + 1] = '{\n'
    para k, v em pares(obj) inicio
      se #s > 1 entao s[#s + 1] = ', \n' fim
      s[#s + 1] = json.codvisual(k, verdadeiro)
      s[#s + 1] = ' :'
      s[#s + 1] = json.codvisual(v)
    fim
   
    s[#s + 1] = '\n}'
  senaose kind == 'string' entao
    retorne ' "' .. escape_str(obj) .. '"'
  senaose kind == 'numero' entao
    se as_key entao retorne '"' .. convstring(obj) .. '"' fim
    retorne convstring(obj)
  senaose kind == 'boolean' entao
    retorne convstring(obj)
  senaose kind == 'nulo' entao
    retorne 'null'
  senao
    retorne falso, ('Tipo não compatível com json: ' .. kind .. '.')
  fim
  retorne tabela.concat(s)
fim



saída:

[
   {
     "ifname" : "ppp1",
     "username" : "fulano",
     "state" : "active",
     "rate-limit" : "10000\/1000",
     "called-sid" : "rede1",
     "uptime" : "00:01:06",
     "tx-bytes-raw" : "1012526",
     "rx-bytes-raw" : "170130",
     "ip" : "10.10.10.1",
     "calling-sid" : "BB:RR:AA:SS:II:LL"
   },
   {
     "ifname" : "ppp2",
     "username" : "ciclano",
     "state" : "active",
     "rate-limit" : "10000\/1000",
     "called-sid" : "rede1.2",
     "uptime" : "00:00:55",
     "tx-bytes-raw" : "2526",
     "rx-bytes-raw" : "1130",
     "ip" : "10.10.10.1",
     "calling-sid" : "BR:AS:IL:BR:AS:IL"
   }
]
#56
Lista de Bugs / Re:erro string.apare() espaços
Última postagem por adalberto - Dezembro 11, 2017, 06:47:32 PM
Problema corrigido. Vou postar em breve na próxima versão.
#57
Lista de Bugs / Re:erro string.apare() espaços
Última postagem por adalberto - Dezembro 11, 2017, 06:23:11 PM
Vou resolver isso em breve, o código é em C. Esta função que vc encontrou é bem eficiente, uma boa alternativa.
#58
Lista de Bugs / Re:erro string.apare() espaços
Última postagem por rafael - Dezembro 11, 2017, 07:41:59 AM
Pesquisei no lua e achei essa função:



G = "                                         "
funcao apare(s)
  retorne (string.troque(s, "^%s*(.-)%s*$", "%1"))
fim
imprima(apare(G))
#59
Lista de Bugs / erro string.apare() espaços
Última postagem por rafael - Dezembro 11, 2017, 07:00:21 AM
O problema é que quando a cadeia é composta apenas por 8 espaços ou mais ele trava.


https://uploaddeimagens.com.br/imagens/captura_de_tela_de_2017-12-11_08-58-33-png
#60
Materiais / Biblioteca GuiTerminal
Última postagem por adalberto - Novembro 03, 2017, 08:38:29 PM
Fiz uma correção na mensagem questão (botões) e reupei:(4/11/2017)

Muitas vezes por algum motivo é necessário abrir mão da interface gráfica e usar apenas o terminal de comandos, seja por questão de memória, seja em um servidor etc.

Que tal unir um pouco dos dois mundos, criando mensagens box, diálogos e listagem no terminal, usando as teclas (Setas, Enter,X,C) para interagir.

Foi pensando nisso que resolvi criar um conjunto básico gui modo texto para usar em programas feitos em Prisma que rodem no terminal.

(Esta lib estará incluída nas próximas versões Prisma e futuramente quero fazer mais tipos de componentes em modo texto, senha, entra texto, etc.);

Download em anexo;

Veja o post completo no site com exemplos básicos: clique aqui



Um exemplo completo:


local td = inclua'guiterminal'
local term = inclua'terminal';
local cortitulo = 'vermelho';

funcao principal()
  ::_INICIO_LOOP_::
  //dialogo de opção:
  ret, m = td.escolha('Cores',' Escolha uma cor (use as setas):', {'azul','verde','preto','magenta'},12,3,19,45,cortitulo);
 
  se ret entao
    td.def_corfundo(m);
    td.ative_corfundo();
  fim
 
  //mensagens
  local txt = [[ Esta é uma mensagem multilinha!
   Em Prisma os duplos colchetes
  permitem a criação de strings
  multilinhas
  certo!!!
  Você mudou a cor de fundo!
  para: ]] .. m
  //Ok
  td.mensagem_ok("Teste", txt , 14,6,cortitulo);
  //aviso:
  td.mensagem_aviso('Aviso',txt,18,2,cortitulo);
 
  //mensagem genérica (questão):
  //com botões padrão: (Cancelar) (Não) (Sim)
  ret,m = td.mensagem_questao("Teste","Deseja reverter a cor de fundo para Preto?",15,4, cortitulo);
  se ret == 3 entao // 1=(Cancelar) 2=(Não) 3=(Sim);
    td.def_corfundo('preto');
    td.ative_corfundo();
  fim
  td.limpe_tudo();
 
  //listagem, pode exibir um lista de clientes ou de arquivos em uma pasta:
  ret, m = td.listagem('Clientes','  Nome       Tel.         End.', lista, 5,3, 19,48,'vermelho');
  td.limpe_tudo();
  se ret entao //omitindo posicao col x lin, o padrão é: 0 x 0;
    td.mensagem_ok('Cliente','Você selecionou: ' .. m);
  senao
    td.mensagem_aviso('Anteção','Você não selecionou nenhum cliente');
  fim
     
  //com botões customizados: {"Sim","Não",num=2,cor='vermelho'} num = botão selecionado, cor = cor do botao selec.
  ret,m = td.mensagem_questao("Teste","Sair do programa?",15,6, cortitulo,{"Sim","Não",num=2,cor='azul'});

  se ret entao
    se m == 'Sim' entao
      td.def_corfundo'preto';
      td.limpe_tudo();
      term.defPadrao();
      sis.saia(0);
    senao
      td.limpe_tudo();
      vapara _INICIO_LOOP_;
    fim
  fim

  retorne 0;
fim //fim principal

lista = {
'Marcos     3334546      rua A',
'Fernanda   5667777      rua B',
'João       2342342      rua C',
'Marcela    1231244      rua D'
}



Ps. screenshots:

        

Falou pessoal até a próxima.