20 agosto 2007

Convertir cualquier tipo de variable a String (I)

Vamos a ver de que funciones dispone Delphi para pasar cualquier tipo de variable a una cadena de texto (String):

function CurrToStr( Value: Currency ): string; overload;

Convierte un valor Currency a String. Por ejemplo:

CurrToStr( 1234.5678 ) devuelve 1234,5678

function CurrToStrF( Value: Currency; Format: TFloatFormat; Digits: Integer ): string; overload;

Convierte un valor Currency a String usando un formato específico determinado por el parámetro Format y por el número de dígitos Digits. Por ejemplo:

CurrToStrF( 1234.5678, ffCurrency, 2 ) devuelve 1.234,57 €
CurrToStrF( 1234.5678, ffCurrency, 4 ) devuelve 1.234,5678 €
CurrToStrF( 1234.5678, ffCurrency, 0 ) devuelve 1.235 €

function DateTimeToStr( DateTime: TDateTime ): string; overload;

Convierte un valor TDateTime a String. Por ejemplo:

var
dt: TDateTime;
begin
dt := StrToDateTime( '20/06/2007 11:27' );
ShowMessage( DateTimeToStr( dt ) );
dt := StrToDateTime( '20/06/2007 00:00' );
ShowMessage( DateTimeToStr( dt ) );
end;

El resultado de ejecutar esto sería:

20/06/2007 11:27:00
20/06/2007

procedure DateTimeToString( var Result: string; const Format: string; DateTime: TDateTime ); overload;

Convierte un valor TDateTime a String usando un formato especificado por el parámetro Format y devolviendo el valor en la variable Result. Por ejemplo:

var
dt: TDateTime;
s: String;
begin
dt := StrToDateTime( '20/06/2007 11:27' );
DateTimeToString( s, 'd/m/y', dt );
ShowMessage( s );
DateTimeToString( s, 'dd/mm/yy', dt );
ShowMessage( s );
DateTimeToString( s, 'dd/mm/yyyy', dt );
ShowMessage( s );
DateTimeToString( s, 'dd-mm-yyyy', dt );
ShowMessage( s );
DateTimeToString( s, 'ddd, d ''de'' mmm ''de'' yyyy', dt );
ShowMessage( s );
DateTimeToString( s, 'dddd, d ''de'' mmmm ''de'' yyyy', dt );
ShowMessage( s );
DateTimeToString( s, 'dd/mm/yyyy hh:nn:ss', dt );
ShowMessage( s );
DateTimeToString( s, 'dd/mm/yyyy hh:nn:ss am/pm', dt );
ShowMessage( s );
DateTimeToString( s, 'ddddd', dt );
ShowMessage( s );
DateTimeToString( s, 'dddddd', dt );
ShowMessage( s );
end;

Mostraría los siguientes resultados:

20/6/07
20/06/07
20/06/2007
20-06-2007
mié, 20 de jun del año 2007
miércoles, 20 de junio del año 2007
20/06/2007 11:27:00
20/06/2007
miércoles, 20 de junio de 2007

Estas son todas las letras para dar formato a un campo fecha/hora:

y = Los dos últimos dígitos del año (sin completar con cero por la izquierda)
yy = Los dos últimos dígitos del año (completando con cero por la izquierda)
yyyy = Los 4 dígitos del año
m = Los dos dígitos del mes (sin completar con cero por la izquierda)
mm = Los dos dígitos del mes (completando con cero por la izquierda)
mmm = El nombre del mes en formato corto (Ene, Feb, Mar, etc.)
mmmm = El nombre del mes en formato largo (Enero, Febrero, Marzo, etc.)
d = Los dos dígitos del día (sin completar con cero por la izquierda)
dd = Los dos dígitos del día (completando con cero por la izquierda)
ddd = El nombre del día en formato corto (Lun, Mar, Mié, etc.)
dddd = El nombre del día en formato largo (Lunes, Martes, Miercoles, etc.)
ddddd = Fecha en formato abreviado (20/06/2007)
dddddd = Fecha en formato extendido (miércoles, 20 de junio de 2007)

c = Formato corto de fecha y hora (20/06/2007 11:27:00)
h = Los dos dígitos de la hora (sin completar con cero por la izquierda)
hh = Los dos dígitos de la hora (completando con cero por la izquierda)
n = Los dos dígitos de los minutos (sin completar con cero por la izquierda)
nn = Los dos dígitos de los minutos (completando con cero por la izquierda)
s = Los dos dígitos de los segundos (sin completar con cero por la izquierda)
ss = Los dos dígitos de los segundos (completando con cero por la izquierda)
z = Los dígitos de los milisegundos (sin completar con cero por la izquierda)
zzz = Los 3 dígitos de los segundos (completando con cero por la izquierda)
t = Formato abreviado de hora (11:27)
tt = Formato extendido de hora (11:27:00)

am/pm = Formato de hora am/pm
a/p = Formato de hora a/p
ampm = Igual que a/p pero con TimeAMString, TimePMString
/ = Sustituido por el valor de DateSeparator
: = Sustituido por el valor de TimeSeparator

Y estas son las variables de los formatos predeterminados para fecha/hora:

DateSeparator = /
TimeSeparator = :
ShortDateFormat = dd/mm/yyyy
LongDateFormat = dd mmm yyyy
TimeAMString = AM
TimePMString = PM
ShortTimeFormat = hh:mm
LongTimeFormat = hh:mm:ss
ShortMonthNames = Jan Feb ...
LongMonthNames = Enero, Febrero ...
ShortDayNames = Lun, Mar ...
LongDayNames = Lunes, Martes ...
TwoDigitCenturyWindow = 50

function DateToStr( Date: TDateTime ): string; overload;

Convierte un valor TDateTime a String. Por ejemplo:

var
d: TDate;
begin
d := StrToDate( '20/08/2007' );
ShowMessage( DateToStr( d ) ); // Mostraría 20/08/2007
end;

En el próximo artículo continuaremos viendo más funciones de conversión.

Pruebas realizadas en Delphi 7.

1 comentario:

VRG dijo...

Como puedo convertir una variable de un tipo enumerado propio a un String para poder visualizarla.

TDias = (Lunes, Martes, etc);

Dia: TDias;
Dia := Lunes;
Write(FuncionConversion(Dia));

Publicidad