PDA

Ver la Versión Completa : Separar texto en 2 lineas...para impresion de cheques


BlueSteel
04-07-2007, 01:28:08
Hola amigos...

Estaba buscando una funcion que me permitiera separar un texto (sin cortar una palabra) en dos lineas,,, para la impresion de cheques....

Hace un tiempo hice la misma funcion pero en clipper.. y ahora no me cruje como hacerla....

la funcion que utilizaba en Clipper era la siguiente:


Lar := Len(numeropala(cmonto)) -> el largo de numero en palabras

if (lar >= 50)
pal1:= substr(pala,1,50)
pos:= rat(" ",pal1) -> me indicaba la posición donde empezaba un espacio
Pal1 := SubStr(pala,1, pos - 1)
Pal2 := SubStr(pala, pos +1, lar - pos);
else
Pal1 := pala;


Bueno,

hasta el momento he encontrado lo siguiente:

Length -> para obtener el largo de la palabra

me falta poder buscar un espacio despues de dicha posición... y empezar a cortar y unir...

la idea seria imprimir lo siguiente (Monto -> $ 854.254.121)

Ochocientos cincuenta y cuatro millones doscientos cincuenta y cuatro mil ciento veintiun

y separarlos en

Ochocientos cincuenta y cuatro millones doscientos
cincuenta y cuatro mil ciento veintiun

dec
04-07-2007, 01:51:24
Hola,


(...) me falta poder buscar un espacio despues de dicha posición...


Creo que la función "rat" de Clipper, según veo, puede sustituirse por la función "pos" en Delphi.

BlueSteel
04-07-2007, 16:37:56
la funcion rat de clipper busca la última posición en donde se encuentra un caracter..

estoy probando la funcion pos... pero me fuciona a medias... solo me falta ver la opción de que me devuelva la posición del último caracter que necesito y no del primero.... pero en eso estoy

gracias :D

gabrielkc
04-07-2007, 16:47:11
La ultima posicion en delphi se usa con

LastDelimiter que como parametros recibe un string con los delimitadores (en este caso el espacio) a buscar y la cadena a examinar

function UPalabra(s:string):string;
begin
Result:=copy(s,LastDelimiter(' ',s),Length(s));
end;


La función anterior llamada con 'Adios Mundo Cruel'devuelve Cruel

para buscar todo menos la ultima palabra sería


function UPalabra(s:string):string;
begin
Result:=copy(s,1,LastDelimiter(' ',s));
end;

BlueSteel
04-07-2007, 18:12:25
gracias de todos modos.. pero tampoco me sirve

trate de usar la funcion LastDelimiter, pero me devuelve un caracter.. y lo que necesito es la posición del caracter..

tambien la combine con Pos, pero me devuelven el primero.. y necesito el último...

seguire tratando

gabrielkc
04-07-2007, 18:14:12
Algo tienes mal, porque LastDelimiter se definiie como:

function LastDelimiter(const Delimiters, S: string): Integer;


te devuelve la posición del último caracter que indiques en la constante Delimiters

BlueSteel
04-07-2007, 18:31:40
perfecto.. ahora me funco...

realmente la estaba utilizando mal.. :D :D


largo:=Length(Cadena);
If Largo >= 85 Then
Begin
Paso:= LastDelimiter(' ',Copy(Cadena,1,85));
sPal1.Caption := Copy(Cadena,1,paso-1);
sPal2.Caption := Copy(Cadena, paso+1, length(Cadena)-paso)
End
Else
Begin
sPal1.Caption := Cadena;
sPal2.Caption := '-----------';
End;