Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Alinear Strings (https://www.clubdelphi.com/foros/showthread.php?t=12268)

rjsitruiz 11-07-2004 16:00:20

Alinear Strings
 
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:

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

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

Empezado por arial

iiiiiiabcde
mmmmmmabcde

en cambio, en courier:
Cita:

Empezado por courier new

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

Cita:

Empezado por rjsitruiz
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

Cita:

Empezado por rjsitruiz
La verdad que el que sabe.... sabe. :-)

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

Cita:

Empezado por roman
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

Cita:

Empezado por Nuria
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

Cita:

Empezado por roman
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...
Cita:

Empezado por roman
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.
Cita:

Empezado por roman
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 ;).


La franja horaria es GMT +2. Ahora son las 05:28:08.

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