Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como guardar una array en una base datos? (https://www.clubdelphi.com/foros/showthread.php?t=7264)

ciscu 10-02-2004 10:19:00

Como guardar una array en una base datos?
 
Hola a todos!!!

Veréis, estoy haciendo un programa ligado con tablas de una base de datos, y entre estas tablas hay una en que guardo las caracteristicas de la fuente utilizada para los quickreports para las cabeceras de facturas, clientes, etc.

Hay un apartado en mi programa en que puedes configurar el tipo de fuente y despues de haber hecho los cambios los guardo en la tabla (en un campo guardo el tipo de fuente, el tamaño y el color.,
Pero todo iva bien cuando me encontré el problema de guardar una variable de tipo TFONTSTYLES en una base de datos para el estilo de fuente (cursiva, negrita, etc...), como:

table1.fields[0].as?????:=fontdialog1.font.style;

Podrias ayudarme a encontrar alguna solución para poder guardar el estilo de la fuente en la base de datos?

Gracias anticipadas :)

delphi.com.ar 10-02-2004 14:34:41

Aclaremos que TFontStyles no es un array, es un "set of" muchas veces nombrados como "conjuntos".
Lo que podrías hacer es descomponer este "conjunto", e ir agregando valores a una variable, y a la inversa por ejemplo:
Código:

function FontStyleToInteger(AStyle: TFontStyles): Integer;
begin
  Result := 0;

  if fsBold in AStyle Then
    Result := Result or $1;

  if fsItalic in AStyle Then
    Result := Result or $2;

  if fsUnderline in AStyle Then
    Result := Result or $4;

  if fsStrikeOut in AStyle Then
    Result := Result or $8;
end;

function IntegerToFontStyle(Value: Integer): TFontStyles;
begin
  Result := [];

  if (Value and $1) = $1 Then
    Include(Result, fsBold);

  if (Value and $2) = $2 Then
    Include(Result, fsItalic);

  if (Value and $4) = $4 Then
    Include(Result, fsUnderline);

  if (Value and $8) = $8 Then
    Include(Result, fsStrikeOut);
end;

Otras ideas que se me ocurren, es copiar el dato de en memoria a un string, o utilizar las WinApi´s para obtener este tipo de valor del dato de la fuente.

Saludos!

Lepe 10-02-2004 18:46:35

Me uno a la Sugerencia de Delphi.com.ar añadiendo que se guarde en la base de datos como un String con el siguiente formato:

Tipo de fuente:tamaño de fuente : opciones de negrita y demás
Ejemplo: Times New Roman:12:5


Lo guardas como un String en la base de datos, y despues al recuperarlo, usas un StringList en el que cargas la linea al completo, usando como separador los dos puntos ":"
Código:

MiStringList.delimitedChar := ':';
MiStringList.delimitedText:= <Linea de la base de datos>

nombre := MiStringList[0];
tamaño := MiStringList[1];
opciones:= MiStringList[2];

No sé si te gustará la idea. Saludos

ciscu 11-02-2004 09:27:49

Saludos cordiales....!!!
 
Gracias por responderme, seguro que de una u otra forma me saldrá bien!!

Saludos!!!


La franja horaria es GMT +2. Ahora son las 08:04:46.

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