Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cadena de longuitud fija (https://www.clubdelphi.com/foros/showthread.php?t=74646)

martita 30-06-2011 21:34:14

cadena de longuitud fija
 
hola foro quiero formar una cadena apartir de una tabla
pero que la cadena aparezca uniformermente al ser vista. ejemplo

los datos de mi tabla son codigo, nombre, direccion, telefono

quiero que una cadena llamada micadena:=

153 JUAN PEREZ LOPEZ CALLE 5TA, ZONA CENTRAL 6852185
21 MARTIN JUAREZ AV. D 5654, OESTE 6952321
542 JOSE MARTINEZ G. BLVD. AGUA C. 55243 8565447

Me explico ? osea que micadena sea de longuitud fija en cada campo
o que se rellenen con espacios para formarla por que si uso lo mas facil que seria algo asi como micadena:=tablacodigo.value+' '+tablanombre.value+' '+tabladireccion.value+' '+tablatelefono quedaria de la siguiente forma que no quiero.

153 JUAN PEREZ LOPEZ CALLE 5TA, ZONA CENTRAL 6852185
21 MARTIN JUAREZ AV. D 5654, OESTE 6952321
542 JOSE MARTINEZ G. BLVD. AGUA C. 55243 8565447

alguien me puede ayudar ?

martita 30-06-2011 21:36:18

ups
 
creo que lo escribi bien pero la pagina aqui lo junto todo

153 JUAN PEREZ LOPEZ CALLE 5TA, ZONA CENTRAL 6852185

21 MARTIN JUAREZ AV. D 5654, OESTE 6952321

542 JOSE MARTINEZ G. BLVD. AGUA C. 55243 8565447

asi es como quiero que sea mi resultado en micadena

martita 30-06-2011 21:37:11

jajajajaja
 
jajaja no se que pasa que la pagina de este foro
me esta quitando los espacios que doy entre campo y campo
para que queden ordenados

ecfisa 30-06-2011 21:47:14

Hola martita.

Código Delphi [-]
function AjustarCadena(ATable: TDataSet): string;
var
  i: integer;
begin
  Result:= '';
  with ATable do
   for i:= 0 to FieldCount -1 do
     Result:= Result + Fields[i].AsString +
      StringOfChar(' ',Fields[i].DisplayWidth+1-Length(Fields[i].AsString));
end;

Llamada de ejemplo:
Código Delphi [-]
  ShowMessage(AjustarCadena(Table));

Saludos.

roman 30-06-2011 22:08:04

Cita:

Empezado por martita (Mensaje 405235)
jajaja no se que pasa que la pagina de este foro
me esta quitando los espacios que doy entre campo y campo
para que queden ordenados

No es que quite los espacios. Lo que sucede es que cuando editas el mensaje y cuando se muestra, se usan fuentes cuyos caracteres tienen distintos anchos. Lo arreglas en uno y se desarregla en el otro.

Para poner texto estilo tablas, que preserve los espacios lo que hay que hacer es:

1. Escribir el texto en un editor de texto simple como el bloc de notas.
2. Copiar y pegar en el editor del mensaje entre las etiquetas [code][/code]

Por ejemplo:

Código:

153      JUAN PEREZ LOPEZ      CALLE 5TA, ZONA CENTRAL    6852185
21      MARTIN JUAREZ        AV. D 5654, OESTE          6952321
542      JOSE MARTINEZ G.      BLVD. AGUA C. 55243        8565447

// Saludos

martita 30-06-2011 22:13:37

gracias roman
 
bueno gracias roman, acaso tendras alguna solucion para esto que quiero hacer ? que cada campo se agregue a una cadena pero con longuitud fija?

roman 30-06-2011 22:32:02

Pues ya ecfisa te dio una opción. También puedes usar Format para ajustar un texto a un ancho determinado, por ejemplo:

Código Delphi [-]
S := Format('%12s', [S]); // Rellena S con espacios a la izquierda hasta completar 12 caracteres en total
S := Format('%-12s', [S]); // Rellena S con espacios a la derecha hasta completar 12 caracteres en total

// Saludos

martita 30-06-2011 23:09:36

solucionado
 
gracias a los 2 por su aporte
con las 2 opciones funciona de maravilla
saludos y gracias


La franja horaria es GMT +2. Ahora son las 12:52:41.

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