Como estou entusiasmado com as múltiplas possibilidades de executar cgis prisma no servido Xampp em rede local, vou começar a postar dicas de programação web e para iniciar uma post de como instalar o servidor em seu próprio computador para testar os aplicativos web. Este é apenas um post atalho para a página onde explico…
Continue readingOutro exemplo de cgi prisma – multiplicar
Este é um exemplo de como receber dados do cliente via get do lado do servidor, processar esses dados, fazer uma operação e mostrar o resultado. Veja: (salve como mult.pri.cgi em no local cgi-bin ou na pasta htdocs se esta permitir executar scripts cgi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#!/usr/local/bin/prisma imprima "Content-type:text/html\r\n\r\n"; imprima '<html>'; imprima '<head>'; imprima '<title>Multiplicar</title>'; imprima '</head>'; imprima '<body>'; imprima'<h1>TESTE DE MULTIPLICAÇÃO</h1>'; data = sis.obtvarambiente("QUERY_STRING");//recebe as variaveis da url ex.: ?nome=Ana;idade=19 imprima[[ <form action="http://localhost/mult.pri.cgi"> <div><label>Numero 1: <input name="m" size="5"></label></div> <div><label>Numero 2: <input name="n" size="5"></label></div> <div><input type="submit" value="Multiplicar!"></div> </form> ]] se data == '' entao imprima'<h1>Nenhum dado recebido!</h1>'; senao data = data:troque('&',';'); f = carregue(data); //basta carregar a string na função e teremos as variaveis como em prisma se f entao f(); imprima("<p>O resultado da multiplicação de", m , "x" , n , '=' , m*n , '</p>' ); senao imprima'<h1>Erro ao executar string</h1>'; fim imprima '<h2></h2>'; imprima( [[<script type="text/javascript"> alert("]] .. "O resultado de " .. m .. "x" .. n .. ' = ' .. m*n .. [["); </script>]] ); imprima '</body>'; imprima '</html>'; fim |
Veja que uso os comandos imprimir() e poe()…
Continue readingTestes com prisma cgi em servidor com sucesso!
Fiquei muito mais otimista com prisma, isto é uma evolução da linguagem… Sem muita pretensão, fui ver como seria rodar um script prisma em modo cgi no servidor instalado em minha máquina local. Para minha surpresa funcionou perfeitamente. Não é possível instalar prisma num servidor compartilhado mas acho que num dedicado ou vpn daria certo,…
Continue readingBiblioteca Reg
Feliz ano de 2016 a todos e desculpe pela demora. Enquanto não concluo a biblioteca igsqlite3, e falta pouco, vou postar aqui uma biblioteca que criei já a algum tempo e aperfeiçoei. PS. A biblioteca sqlite3 foi concluída, veja <aqui> Imagine que você defina valores de configuração em seu programa, como cores, fontes, variáveis etc….
Continue readingNovo site Prisma
Atenção estou com novo endereço web: página inicial: linguagemprisma.br4.biz blog: linguagemprisma.br4.biz/blog wordpress host: linguagemprismablog.wordpress.com Prisma4ever.
Continue readingRegistro do Windows ( Enumerando chaves e valores)
Esse exemplo demonstrará como enumerar (listar) chaves, nomes ou valores. Extremamente importante se você quer fazer uma função de pesquisa no registro. Segue o código comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
inclua'win'; k = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); //enumerando os nomes da chave 'k' : "HKEY_CURRENT_USER\\PrismaInfo\\" v = win.RegEnumere( k ) se v entao //lendo os valores para i , v em ipares( v ) inicio imprima(v); //obtendo informacao de tipo de chave e valor, e tamanho: (retorno é uma tabela com os campos: tipo , tamanho local t = win.RegObtInfoValor(k , v ) imprima( 'tamanho: ' .. t.tamanho); se t.tipo == REG_BINARY entao imprima('\n'.. t.tipo , 'tipo binario') imprima( desempacote(win.RegLeiaChaveBin(k,v) ) ); senaose t.tipo == REG_SZ entao imprima('\n'.. t.tipo , 'tipo string') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_EXPAND_SZ entao imprima( '\n'.. t.tipo , 'tipo string com variaveis de ambiente') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_MULTI_SZ entao imprima( '\n'.. t.tipo , 'tipo multi string') local tt = win.RegLeiaChaveStr(k,v) ; imprima( desempacote(tt) ); senaose t.tipo == REG_DWORD entao imprima('\n'.. t.tipo , 'tipo numero') imprima( win.RegLeiaChaveNum(k,v) ); fim fim //fim para imprima( v.tipo ); fim win.RegFecheChave(k); win.poe'Ok para sair'; |
Detalhes: A função para listar todas as subchaves de uma chave maior é:
1 |
v = win.RegEnumere( k ) |
Onde ‘k’ é a chave aberta anteriormente. O retorno é uma tabela Prisma em…
Continue readingRegistro do Windows (deletando valores)
A novidade aqui é a função de apagar valores ou subchaves vazias. (o restante já foi explicado nos posts anteriores)
1 |
ret = win.RegDeleteValor( ch , 'TESTE_STR' ); |
Ela retorna verdadeiro em caso de sucesso ou nulo em caso de falha. Dica: use win.poe( win.ObtErroMsg() ) para ver o último erro em caso de falha; Obs. No Windows 7 e superiores é…
Continue readingRegistro do Windows (lendo valores das chaves)
Este exemplo demonstra como ler os valores do registro, veja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
//exemplo 04 - como fazer leitura em uma chave de registro: /**__________________________________________________________________** //lendo uma string: (REG_SZ, REG_EXPAND_SZ ); inclua'win' //primeiro abra a chave em modo leitura: k = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); //KEY_READ = MODO LEITURA //A funcao acima retorna a chave e tipo em caso de sucesso ou nulo quando em erro. se k entao //verifica se foi retornado uma chave aberta ou nulo v , tip = win.RegLeiaChaveStr( k , 'TESTE_STR' ); //use a funcao que lê strings. se tip == REG_SZ entao imprima'sz' fim se v entao win.Msg(nulo,v,'String') senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; //multistring (o retorno é uma tabela de strings tab , tip = win.RegLeiaChaveStr( k , 'TESTE_MULTISTR' ) ; //use a funcao que lê strings. se tip == REG_MULTI_SZ entao se tipo(tab) == 'tabela' entao win.Msg( nulo , tabela.concat( tab , ' | '), 'MULTI_SZ'); fim senao win.poe( tab ); fim //fim tip == win.RegFecheChave(k); //agora que já obtivemos o valor, podemos fechar a chave, nunca se esqueça disso. fim //se k /**__________________________________________________________________** //lendo número k2 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); se k2 entao v = win.RegLeiaChaveNum ( k2 , 'TESTE_NUM' ); //um DWORD convertido para prisma number. se v entao win.Msg(nulo , v , 'Numero' ) senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; win.RegFecheChave(k2); fim /**__________________________________________________________________** //LENDO UMA CHAVE BINARIA = REG_BINARY // O RETORNO É UMA TABELA DE NUMEROS: //cada número é de 0 a 255. (ou em hexa = 0 a ff; k3 = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); se k3 entao v = win.RegLeiaChaveBin ( k3 , 'TESTE_BIN' ); se v entao win.Msg( nulo, tabela.concat(v,' | ') , 'Binary' ) senao win.poe(conv_w"ERRO - chave não encontrada no registro ou não pôde ser aberta") fim; win.RegFecheChave(k3); fim win.poe(conv_c"ok para sair..."); |
A novidade aqui fica por conta da função de leitura (As outras funções foram bem explicadas nos posts anteriores); 1 – abra uma chave com o tipo KEY_LEITURA ou KEY_ACESSO_TOTAL (acesso total para leitura, escrita, criação etc); 2 – use a chave retornada…
Continue readingRegistro do Windows ( escrevendo valores )
Exemplo de como escrever (definir) valores no registro do Windows. Segue o código comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/** exemplo 02 como escrever (definir valor) em chave de registro **// inclua'win' //01 - abra um registro já criado em modo KEY_ESCRITA (ou crie um): k = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo', KEY_ESCRITA); //gravando em [HKEY_CURRENT_USER>SessionInformation] /** poderia ser: HKEY_CLASSES_ROOT; HKEY_LOCAL_MACHINE; HKEY_USERS OU HKEY_CURRENT_CONFIG (ao critério do programador. ** //02 use a funcao win.RegDefValor(parametros: ( chave , 'nome' , TIPO , "valor"); se k entao //caso haja erro o retorno é nulo //________________________________________________________________________ //03 ESCREVENDO STRING ret = win.RegDefValor( k , 'TESTE_STR' , REG_SZ , conv_w'uma string em prisma'); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim ret = win.RegDefValor( k , 'TESTE_MULTISTR' , REG_MULTI_SZ , //os argumentos podem ser em linhas diferentes sem problema, só não esqueça da vírgula {'primeira string' , 'segunda string' , 'terceira string','quarta string', 'quinta string' } ); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //abra o regedit e veja nessa chave acima o nome TESTE e seu valor! //________________________________________________________________________ //04 ESCREVENDO NÚMERO: //vamos aproveitar a mesma chave aberta, mas pode abrir outra se quiser ret = win.RegDefValor( k , 'TESTE_NUM' , REG_DWORD , 1000000); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //lembrando que no registro fica em formato hexa, mas a função de leitura //obtém o valor em formato número prisma novamente. //________________________________________________________________________ //05 ESCREVENDO BYTES(BINARIO): (passe uma tabela) ret = win.RegDefValor( k , 'TESTE_BIN' , REG_BINARY , {0X01,0X04,0XFF,0XAF,0X09} ); se ret entao imprima"SUCESSO" senao imprima"ERRO" fim //06 não esqueça de fechar a chave aberta após usada. win.RegFecheChave(k); senao //se o retorno de abertura da chave for nulo, esta exceção será executada imprima(conv_c'valor de chave inválido:' , k); //Esta é uma nova função simples de mensagem em win, sem título e com ícone de atenção. win.poe( conv_w'chave não pode ser aberta ou não foi encontrada'); fim //modifique o nome de chave na função win.RegAbraChave acima só para ver o erro; |
Detalhes: Veja que a função de abertura é simples: chave = win.RegAbraChave( HKEY_CHAVE , ‘NomeSubchave ‘, KEY_TIPO); em que: chave é o retorno da chave aberta ou nulo caso tenha erro. HKEY_CHAVE = é o nome da chave mestra onde…
Continue readingNavegador web usando igwebkit e igbr. (Somente para Prisma versão Línux) Webkit em teste.
Webkit é o motor de internet usado pelo Safari, Chromium, Chrome e tantos outros. Muito útil, pois tem funções de alto nível que facilitam a criação de aplicações web e de acesso a rede sem precisar reconstruir a roda para isso. Uma má notícia é que ainda não consegui compilar corretamente o webkitgtk em Windows….
Continue reading