Clipper On Line • Ver Tópico - Pequeno programa: txt2ascii.prg

Pequeno programa: txt2ascii.prg

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Pequeno programa: txt2ascii.prg

Mensagempor mauricioportela » 25 Fev 2021 16:31

Programa: txt2ascii.prg

Pega uma string, converte cada caractere para seu valor ascii (separado por virgula) e grava no arquivo.

A função MostraRegistro( nReg ) pega o registro e recupera o valor gravado.

// Mauricio P Pires <mauricioppires at gmail dot com>
#include "inkey.ch"

FUNCTION Main()
    LOCAL cCodigo, cTexto, cLinha, x
    IF !FILE("caderno.dbf")
        aCaderno := { { "CODIGO", "C",  10, 00 }, ;
                      { "LINHA" , "C", 200, 00 } }
        DBCREATE("caderno.dbf", aCaderno)
    ENDIF
    USE caderno NEW
    SELECT caderno
    CLS
    @ 02, 02 SAY "Texto2ASCII"
    @ 10, 10 SAY "Codigo"
    @ 10, 21 SAY "Texto"
    @ 22, 02 SAY "ESC - Sair do Modulo."
    WHILE .T.
        DBGOBOTTOM()
        cCodigo := STRZERO(VAL(caderno->CODIGO)+1,10)
        cTexto  := SPACE(50)
        cLinha  := ""
        @ 12, 10 SAY cCodigo
        @ 12, 21 GET cTexto
        READ
        IF LASTKEY() == K_ESC
            EXIT
        ENDIF
        cTexto := ALLTRIM(cTexto)
        cLinha := ""
        FOR x = 1 TO LEN(cTexto)
            IF (x != LEN(cTexto))
                cLinha += ALLTRIM(STR(ASC(SUBSTR(cTexto, x, 1)))) + ","
            ELSE
                cLinha += ALLTRIM(STR(ASC(SUBSTR(cTexto, x, 1))))
            ENDIF
        NEXT
        DBAPPEND()
        caderno->CODIGO := cCodigo
        caderno->LINHA  := cLinha
        DBCOMMIT()
    ENDDO
    MostraRegistro( 1 )
    CLOSE DATA
RETURN Nil

FUNCTION MostraRegistro( nRegistro )
    LOCAL aLinha, x, cTxtRestaurado
    DBGOTO( nRegistro )
    aLinha := &("{" + caderno->LINHA + "}")
    cTxtRestaurado := ""
    FOR x = 1 TO LEN(aLinha)
        cTxtRestaurado += CHR(aLinha[x])
    NEXT
    ALERT("Registro # [" + ALLTRIM(STR(nRegistro)) + "];;" + "Conteudo [" + cTxtRestaurado + "]")
RETURN Nil


Observação: A variavel ctexto tem tamanho de 50 espaços. Assim o campo Linha fica com: 3 espaço (valor ascii mais alto) + a virgula. 3+1 * 50 = 200.
Avatar de usuário

mauricioportela
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 83
Data de registro: 29 Jul 2016 04:22
Cidade/Estado: Vitoria da Conquista/Bahia
Curtiu: 4 vezes
Mens.Curtidas: 21 vezes



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro