PDA

Ver la Versión Completa : Alinear Strings


rjsitruiz
11-07-2004, 16:00:20
hola:

Tengo varias lineas de Texto ejemplo:
05/24/04 08:12AM 217 860491160460464 00:45'11
05/24/04 08:13AM 217 8354128 00:00'03

cuando las guardo en DBQRMemo se me guardan de la siguiente forma
05/24/04 08:12AM 217 860491160460464 00:45'11
05/24/04 08:13AM 217 8354128 00:00'03

y quisiera que se me guardaran como muestro arriba...... cada elemnto de la linea es un campo que yo manejo Ej. Fecha: 05/24/04 Hora:08:12AM etc.

Lo que estoy haciendo es Cad1= Fecha + Hora + Ext + Phone y despues inserto en la posicion 70 la cadena dos, Cad2= Duracion no obstante me sigue saliendo
05/24/04 08:12AM 217 860491160460464 00:45'11
05/24/04 08:13AM 217 8354128 00:00'03

Que puedo hacer ??

Saludos

jachguate
11-07-2004, 18:16:57
:confused:

Pues yo las veo todas iguales... :confused:

rjsitruiz
11-07-2004, 20:02:45
Perdon.. sino me hice entender

hablo de la duracion que quiero que me salga una debajo de otra....

Lo que me sale:
05/24/04 08:12AM 217 860491160460464 00:45'11
05/24/04 08:13AM 217 8354128 00:00'03

Lo que quiero que me salga:
05/24/04 08:12AM 217 860491160460464 ------- 00:45'11
05/24/04 08:13AM 217 8354128 ---------------- 00:00'03

PD: Le tuve que llenar los espacios en blanco con (-)

Saludos

jachguate
12-07-2004, 00:01:27
Podes valerte de la función Format

Algo como:


Cadena := format('%8.8s %7.7s %3.3s %15.15s %8.8s',
[fecha, hora, ext, phone, duracion]);


He usado %s porque veo que ya todo está en strings, pero podes visitar la ayuda y ver los tipos soportados si hay algo que se adapte mejor.

Hasta luego.

;)

rjsitruiz
12-07-2004, 14:04:00
24/05/04 08:12AM 217 860491160460464 00:45:11
24/05/04 08:13AM 217 ----- 8354128 00:00:03

Pues asi es como sale..... no se porque....

No obstante gracias

Lepe
12-07-2004, 17:15:58
La funcion Format nunca la habia usado así, lo que si tengo a mano son estas 2 funciones que vienen con las Rxlibs en la unidad nkStrs. Si no recuerdo mal eran originarias de las NKLibs que han ido quedando algo obsoletas.


function PadLeft(const cStr: String; ch: char; iLen: Integer): String;
begin
if Length(cStr) >= iLen then
Result := Copy(cStr, 1, iLen)
else
Result := StringOfChar(ch, iLen - Length(cStr)) + cStr;
end (*PadLeft*);

function PadRight(const cStr: String; ch: char; iLen: Integer): String;
begin
if Length(cStr) >= iLen then
Result := Copy(cStr, 1, iLen)
else
Result := cStr + StringOfChar(ch, iLen - Length(cStr));
end (*PadRight*);


Ejemplo:

Padright(telefono,'-', 15); //8354128--------
PadLeft(telefono,'-',15); //--------8354128


Saludos

jachguate
12-07-2004, 17:22:18
Siguiendo todo el hilo, me da la impresión que lo que queres es que se "vean" alineados en pantalla, ¿cierto?.

Si estas usando un Memo, lo que hace falta es que uses un tipo de letra "monospace", es decir, que todos los caracteres ocupen el mismo espacio, como la Courier, por ejemplo.

Lo usual, en fuentes TrueType es que cada letra ocupe el espacio "necesario", de esta manera, si tenes una cadena con 6 ies y una con 6 emes, será mucho "mas larga" la de las emes:


iiiiiiabcde
mmmmmmabcde



en cambio, en courier:


iiiiiiabcde
mmmmmmabcde



Hasta luego.

;)

rjsitruiz
12-07-2004, 21:28:46
La verdad que el que sabe.... sabe. :-)

Y el que no... se rompe la cabeza tratando de inventar funciones.

Saludos a todos y gracias por su tiempo

roman
12-07-2004, 22:09:00
La verdad que el que sabe.... sabe. :-)

Y el que no... se rompe la cabeza tratando de inventar funciones.


Y el que sabe, lo sabe porque en su momento se rompió la cabeza ;)

rjsitruiz
13-07-2004, 02:04:06
jajajaja tienes toda la razón Roman.

Una vez mas, Saludos y MIL Gracias a todos

Nuria
13-07-2004, 08:47:19
La verdad que el que sabe.... sabe. :-)

Y el que no... se rompe la cabeza tratando de inventar funciones.

Y el que sabe, lo sabe porque en su momento se rompió la cabeza

Y hay otros que se rompierón la cabeza... :rolleyes:, y al final tuvieron que inventar una función. Y encima voy y la llamo fPad, ahora sabiendo que existe PadLeft-PadRight cambieré mi función que seguro que va más rápido. Nunca te acostarás sin saber una cosa más....

Saludos! ;)

roman
13-07-2004, 09:07:51
ahora sabiendo que existe PadLeft-PadRight cambieré mi función que seguro que va más rápido.

Bueno, yo no veo particularmente rápido el código descrito y no creo que sea esencialmente más rápido que cualquiera al que tú misma hayas llegado. Además utilizar tu propio código te evita instalar las RX junto con sus quinientas cuarenta y cinco mil setecientas veintitres funciones y objetos para algo tan sencillo. ;)

// Saludos

Nuria
13-07-2004, 09:20:16
Bueno, yo no veo particularmente rápido el código descrito y no creo que sea esencialmente más rápido que cualquiera al que tú misma hayas llegado.
:rolleyes: :rolleyes: No sé, no sé, tendrías que ver mi código :D:D. Eso sí, funciona a las mil maravillas...
Además utilizar tu propio código te evita instalar las RX
En eso tienes razón...pero como ya utilizo las Rx, las tengo instaladas, por eso no hay problema.
junto con sus quinientas cuarenta y cinco mil setecientas veintitres funciones y objetos para algo tan sencillo.
:eek: :eek: Te debes de aburrir mucho para contar las funciones y objetos que tiene las Rx.... :D:D:p

Gracias por el consejo Roman, lo tengo en cuenta ;).