Mostrando postagens com marcador String. Mostrar todas as postagens
Mostrando postagens com marcador String. Mostrar todas as postagens

sexta-feira, 20 de junho de 2014

Essa rotina ira fazer com que nao quebre palavras

Essa rotina ira fazer com que nao quebre palavras

!Loc:Transfere_Obs
    !Essa rotina ira fazer com que nao quebre palavras
    !loc:Texto string 2000
    !loc:contador long
    !loc:inicial long
    !loc:final long
    !loc:transfere_obs => Grupo => com ! wobs dim[6] Tamanno 80
    loc:Texto=Loc:Transfere_Obs
    Loc:Transfere_Obs=''  
    loc:contador=0
    LOOP
        IF loc:Texto<>''
            Loc:Inicio=1;loc:Final=80;loc:contador+=1
            IF loc:contador>6
                BREAK
            ELSE          
                LOOP
                    if (SUB(loc:Texto,loc:Final,1)<>'' AND SUB(loc:Texto,loc:Final+1,1)='') OR (SUB(loc:Texto,loc:Final,1)='')
                        WObs[loc:contador]=CLIP(LEFT(sub(loc:Texto,Loc:Inicio,loc:Final)))
                        loc:Texto=sub(loc:Texto,loc:Final+1,20000)
                        BREAK
                    ELSE
                        LOC:FINAL-=1
                        IF LOC:FINAL<1 p="">                            LOC:INICIO=LOC:INICIO+loc:Final
                            WObs[loc:contador]=CLIP(LEFT(sub(loc:Texto,Loc:Inicio,loc:Final)))
                            LOC:FINAL=80
                            BREAK
                        END        
                    END
                END
            END      
        ELSE
            BREAK
        END  
    END
!Loc:Transfere_Obs

domingo, 3 de maio de 2009

String - Instring

Texto CLASS
Frase String(200), PROTECTED
Palabra String(20), PROTECTED
Puntero Short, PROTECTED
Delimitadores String(20), PRIVATE

Construct PROCEDURE
Inicio PROCEDURE(String Frase)
SigPalabra PROCEDURE, String
END


Texto.Construct PROCEDURE()
CODE
!cualquiera de estos caracteres pueden separar palabras
SELF.Delimitadores = ' ,;.-()][}{{_:<<>\/@#ºª^?¿¡!|"'''
SELF.Puntero = 1

Texto.Inicio PROCEDURE(String Frase)
CODE
SELF.Puntero = 1
SELF.Frase = Frase

Texto.SigPalabra PROCEDURE()
DESDE SHORT
HASTA SHORT
LETRA STRING(1)
CODE
SELF.Palabra = ''
!primero busco donde comienza la siguiente palabra (elimino delimitadores)
LOOP DESDE = SELF.Puntero TO 200
IF NOT INSTRING(SUB(SELF.Frase,DESDE,1), SELF.Delimitadores,1,1)
THEN BREAK.
END

LOOP HASTA = DESDE TO 200
Letra = SUB(SELF.Frase,HASTA,1)
IF INSTRING(Letra, SELF.Delimitadores,1,1)
BREAK
ELSE
SELF.Palabra = CLIP(SELF.Palabra) & Letra
END
END
SELF.Puntero = HASTA + 1
RETURN(SELF.Frase[Desde : Hasta])

Clarion - Gravar direto api windows txt

\BANCO\EXEMPLO\TXT\WRITE.APP - EVOLUTION

!Variaveis
Texto cstring 10.000
FileName cstring 200
!Variavies

!Inside the Global Map
MODULE('Windows API')
_lcreat(*CSTRING,SIGNED),SIGNED,PASCAL,RAW
_hwrite(SIGNED,*CSTRING,LONG),LONG,PASCAL,RAW
_lclose(SIGNED),SIGNED,PASCAL
END

!CODE

IF NOT FILEDIALOG('Guardar como',FileName,'Text|*.TXT|Source|*.CLW',FILE:Save + FILE:LongName)
CYCLE
END
F# = _lcreat(FileName,0)
X# = _hwrite(F#,Texto,LEN(Texto))
X# = _lclose(F#)

!code