Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Separar texto en 2 lineas...para impresion de cheques (https://www.clubdelphi.com/foros/showthread.php?t=45463)

BlueSteel 04-07-2007 01:28:08

Separar texto en 2 lineas...para impresion de cheques
 
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:

Código:

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,

Cita:

(...) 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
Código Delphi [-]
 
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

Código Delphi [-]
 
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

Código Delphi [-]
    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;


La franja horaria es GMT +2. Ahora son las 10:41:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi