Clipper On Line • Ver Tópico - SUBSTRINGS NO MEMOEDIT

SUBSTRINGS NO MEMOEDIT

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

Moderador: Moderadores

 

SUBSTRINGS NO MEMOEDIT

Mensagempor Pablo César » 21 Mar 2007 17:54

Como prometí, estou disponbilizando este recurso do MEMOEDIT. Que dá pra procura STRING e aparecerá com outra cor e pode chamar outro arquivo de dentro deste MEMOEDIT.

Nome do PRG: AGRADECE.PRG
Compilar: CLIPPER AGRADECE
RTLINK FI AGRADECE LIB CT


PARAMETERS VRODA

PUBLIC cBusca,nMemoRow,nMemoCol
nMemoRow:=0
nMemoCol:=0
cBusca:=""
CONTECOR := { "09/01","00/07","15/04","15/01","00/03","00/07","04/07","08/07","15/03","15/02","15/04","14/07","15/03" }
IF FILE("AGRADECE.NFO")
   VAGRA:=MEMOREAD("AGRADECE.NFO")
ENDIF
VT:=MLCOUNT(VAGRA,40)
IF VT>15
   VT=15
ENDIF
SET CURSOR OFF
JANELA(03,18,VT+6,62,"Clientes e Colaboradores")
IF (MLCOUNT(VAGRA,40))>15
   @ VT+6,19 SAY PADC("Digite ou utilize as teclas <"+CHR(24)+"> e <"+CHR(25)+">",44) COLOR CONTECOR[9]
ENDIF
SETCOLOR( CONTECOR[ 4 ] + "," + CONTECOR[ 2 ] + ",,," + CONTECOR[ 8 ] )
DO WHILE .T.
   MEMOEDIT(VAGRA,04,21,VT+4,60,.F.,"CONTROL",,,nMemoRow,nMemoCol)
   IF LASTKEY()=27
      EXIT
   ELSE
      nRec:=BUSCA(VAGRA,cBusca,04,21,VT+4,60)
      nMemoRow:=nRec[1]
      nMemoCol:=nRec[2]
      IF nMemoRow=0 .AND. nMemoCol=0
         cBusca:=""
      ENDIF
   ENDIF
ENDDO

FUNCTION JANELA( PJAN1, PJAN2, PJAN3, PJAN4, PJAN5, PJAN6 )
IF PJAN5=NIL
   PJAN5 := ""
ENDIF
SOMBRA( PJAN1, PJAN2, PJAN3, PJAN4 )
IF PJAN6=NIL
   SETCOLOR( CONTECOR[ 4 ] )
ELSE
   SETCOLOR( CONTECOR[ 11 ] )
ENDIF
@ PJAN1, PJAN2 CLEAR TO PJAN3, PJAN4
SETCOLOR( CONTECOR[ 5 ] )
@ PJAN1, PJAN2, PJAN3, PJAN4 BOX " "
@ PJAN1, PJAN2 SAY "þ"
IF LEN( TRIM( PJAN5 ) ) > 0
   @ PJAN1, PJAN2 + ( ( ( PJAN4 + 1 - PJAN2 ) - LEN( PJAN5 ) ) / 2 ) SAY PJAN5
ENDIF
RETURN NIL

FUNCTION SOMBRA( LIN_SUP, COL_SUP, LIN_INF, COL_INF )
IF PCOUNT() = 2 .OR. PCOUNT() = 3
   C_SOM := COL_SUP; L_SOM := LIN_SUP
   LIN_SUP := VAL( SUBS( C_SOM, 1, 2 ) )
   COL_SUP := VAL( SUBS( C_SOM, 3, 2 ) )
   LIN_INF := VAL( SUBS( C_SOM, 5, 2 ) )
   COL_INF := VAL( SUBS( C_SOM, 7, 2 ) )
   COL_SOM := SUBS( C_SOM, 9 )
   LIN_SOM := L_SOM
ENDIF
IF COL_SUP < 2 .OR. LIN_INF > 22
   C_SOM := ""; L_SOM := ""
   RETURN .F.
ENDIF
IF PCOUNT() = 3
   RESTSCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1, COL_SOM )
   RESTSCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2, LIN_SOM )
   RETURN .F.
ENDIF
IF PCOUNT() != 2
   COL_SOM := SAVESCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1 )
   LIN_SOM := SAVESCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2 )
ENDIF
IF SUBS( COL_SOM, 2, 1 ) != CHR( 8 )
   C_SOM := STR( LIN_SUP, 2 ) + STR( COL_SUP, 2 ) + STR( LIN_INF, 2 ) + STR( COL_INF, 2 ) + COL_SOM
   L_SOM := LIN_SOM
ENDIF
FOR I = 2 TO LEN( COL_SOM ) STEP 2
   COL_SOM := STUFF( COL_SOM, I, 1, CHR( 8 ) )
NEXT
FOR I = 2 TO LEN( LIN_SOM ) / 2 STEP 2
   LIN_SOM := STUFF( LIN_SOM, I, 1, CHR( 8 ) )
NEXT
RESTSCREEN( LIN_SUP + 1, COL_SUP - 2, LIN_INF + 1, COL_SUP - 1, COL_SOM )
RESTSCREEN( LIN_INF + 1, COL_SUP - 2, LIN_INF + 2, COL_INF - 2, LIN_SOM )
RETURN .T.

FUNCTION CONTROL(MODO,V_LINHA,V_COLUNA)
VRET:=0
VK:=LASTKEY()
VP:=LEN(cBusca)

IF MODO=0
   SCREENMARK("ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ","12/"+RIGHT(CONTECOR[3],2),.T.,.F.)
   SCREENMARK("     Pablo C‚sar Arrascaeta     ",CONTECOR[3],.T.,.F.,"Û","Û")
   SCREENMARK(" pablo.arrascaeta@terra.com.br  ",CONTECOR[3],.T.,.F.,"Û","Û")
   SCREENMARK(" Telefone xxxx-xxxx / xxxx-xxxx ",CONTECOR[3],.T.,.F.,"Û","Û")
   SCREENMARK("Û","12/"+RIGHT(CONTECOR[3],2),.T.,.T.,"Á"," ")
   SCREENMARK("Û","12/"+RIGHT(CONTECOR[3],2),.T.,.F.,"Â"," ")
   SCREENMARK("Û","12/"+RIGHT(CONTECOR[3],2),.T.,.T.," ","Ä")
   SCREENMARK("ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ","12/"+RIGHT(CONTECOR[3],2),.T.,.F.)
ENDIF

DO CASE
   CASE VK=7 .AND. !(MODO=3) .AND. VP>0
        VCORM:=SETCOLOR()
        VTELAM:=SAVESCREEN(08,06,18,72)
        VWV:=ALLTRIM(RIGHT(MEMOLINE(VAGRA,40,V_LINHA),10))
        VVTT:=ALLTRIM(SUBSTR(MEMOLINE(VAGRA,40,V_LINHA),1,30))
        VVFF:=SUBSTR(VWV,1,4)+SUBSTR(VWV,6,4)+".NFO"
        IF FILE(VVFF)
           IF ALERT("Deseja deletar o arquivo "+VVTT,{"N„o","Sim"})=1
              DELETE FILE(VVFF)
           ENDIF
        ENDIF
        SETCOLOR(VCORM)
        RESTSCREEN(08,06,18,72,VTELAM)
   CASE VK=9
   CASE VK=13 .AND. !(MODO=3) .AND. VP>0
        VCORM:=SETCOLOR()
        VTELAM:=SAVESCREEN(08,06,18,72)
        VWV:=ALLTRIM(RIGHT(MEMOLINE(VAGRA,40,V_LINHA-1),10))
        VVTT:=ALLTRIM(SUBSTR(MEMOLINE(VAGRA,40,V_LINHA-1),1,30))
        VVFF:=SUBSTR(VWV,1,4)+SUBSTR(VWV,6,4)+".NFO"
        IF VRODA=NIL .AND. cBusca $ UPPER(SUBSTR(MEMOLINE(VAGRA,40,V_LINHA-1),1,30))
           IF FILE(VVFF)
              VVXX:=MEMOREAD(VVFF)
              JANELA(09,15,14,65,VVTT,"ALERT")
              @ 14,16 SAY PADC("Pressione <Esc> para sair",49) COLOR CONTECOR[5]
              SETCOLOR( CONTECOR[ 3 ] + "," + CONTECOR[ 2 ] + ",,," + CONTECOR[ 8 ] )
              MEMOEDIT(VVXX,11,18,13,63,.F.)
           ENDIF
        ELSE
           IF FILE(VVFF)
              VVXX:=MEMOREAD(VVFF)
           ELSE
              VVXX:=""
           ENDIF
           SET CURSOR ON
           JANELA(09,15,14,65,VVTT,"ALERT")
           @ 14,16 SAY PADC("Pressione <Esc> para sair",49) COLOR CONTECOR[5]
           SETCOLOR( CONTECOR[ 3 ] + "," + CONTECOR[ 2 ] + ",,," + CONTECOR[ 8 ] )
           VVXX:=MEMOEDIT(VVXX,11,18,13,63,.T.)
           MEMOWRIT(VVFF,VVXX)
           SET CURSOR OFF
        ENDIF
        SETCOLOR(VCORM)
        RESTSCREEN(08,06,18,72,VTELAM)
   CASE VK=27
   CASE VK=8 .AND. VP>1                    // Backspace, Ctrl-H
        VP=VP-1
        cBusca:=SUBSTR(cBusca,1,VP)
        VRET:=23
        KEYBOARD CHR(23)
   CASE VK=8 .AND. VP=1                    // Backspace, Ctrl-H
        VP=0
        cBusca:=""
        VRET:=23
        KEYBOARD CHR(23)
   CASE VK=5 .OR. VK=24                    // Up, Down
        VP=0
        cBusca:=""
        IF VK=5 .AND. V_LINHA=1
           Tone(125, 0)
           KEYBOARD CHR(30)
        ENDIF
        IF VK=24 .AND. V_LINHA>=MLCOUNT(VAGRA)+1
           Tone(125, 0)
           KEYBOARD CHR(31)
        ENDIF
   CASE VK>31
        VP=VP+1
        cBusca:=cBusca+CHR(VK)
        VRET:=23
        KEYBOARD CHR(23)
   OTHERWISE
ENDCASE
IF LEN(cBusca)>0
   COLORWIN(04,21,04,59,CONTECOR[3])
   VTXT:=CHARODD(SCREENSTR(04,21+V_COLUNA,(LEN(cBusca))))
   @ 04,21+V_COLUNA SAY VTXT COLOR CONTECOR[3]+"*"
ENDIF
RETURN VRET

FUNCTION BUSCA(VAGRA,cBusca,VL1,VC1,VL2,VC2)
VTAMA:=MLCOUNT(VAGRA)
VLARG:=(VC2-VC1)
VREC:={0,0}
FOR I=1 TO VTAMA
    V_LIN:=UPPER(MEMOLINE(VAGRA,VLARG,I))
    V_LIN:=CHARREPL("‡",V_LIN,"€",.T.)
    V_LIN:=CHARREPL("„",V_LIN,"A",.T.)
    V_LIN:=CHARREPL(" ",V_LIN,"A",.T.)
    V_LIN:=CHARREPL("ˆ",V_LIN,"E",.T.)
    V_LIN:=CHARREPL("‚",V_LIN,"E",.T.)
    V_LIN:=CHARREPL("¡",V_LIN,"I",.T.)
    V_LIN:=CHARREPL("”",V_LIN,"O",.T.)
    V_LIN:=CHARREPL("“",V_LIN,"O",.T.)
    V_LIN:=CHARREPL("¢",V_LIN,"O",.T.)
    V_LIN:=CHARREPL("£",V_LIN,"U",.T.)
    VOND:=AT(UPPER(cBusca),V_LIN)
    IF VOND>0
       VREC:={I,(VOND-1)}
       EXIT
    ENDIF
NEXT
RETURN VREC


Gravar estes textos em arquivos.

Gravar este arquivo como AGRADECE.NFO
Agrade‡o muito a colabora‡„o que receb¡
de todos os meus clientes, com os quais
compartilhamos id‚ias e buscamos sempre
atender a todas as necessidades que uma
video locadora demanda e poder alcan‡ar
o aperfei‡oamento do sistema.

Alternativa Video             3423-4896
Magic Video  (Praia de Leste) 3458-2428
DVD Club Express   (Curitiba) 3019-4667

               ___MMM___
                 (0-0)
ÄÄÄÂÄÄÄÂÄÄÄÂÄoOOÄÄ(_)ÄÄOOoÄÂÄÄÄÂÄÄÄÂÄÄÄ
ÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄ
ÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄ
ÄÂÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛÄÂÄ
ÄÁÛ     Pablo C‚sar Arrascaeta     ÛÄÁÄ
ÄÂÛ pablo.arrascaeta@terra.com.br  ÛÄÂÄ
ÄÁÛ Telefone xxxx-xxxx / xxxx-xxxx ÛÄÁÄ
ÄÂÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÄÂÄ
ÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄ
ÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄÁÄÂÄ
ÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄÄÄÁÄ
        Muito obrigado a todos !


E gravar este outro que servirá de exemplo, como 34234896.NFO
Av. Bento Rocha, 1660
Vila Guaran¡ - Paranagu



Espero que gostem.

Um clip-abraço :)Pos
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 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