Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
leer string por caracteres

Hola a tod@s,

acudo de nuevo en vuestra ayuda con una tonteria que no soy capaz de resolver. En una qry de mysql obtengo un campo con el resultado de una suma de tiempo en formato segundos (es un longinteger), a partir de ese campo relleno un campo calculado (string) con el siguiente código :

Código Delphi [-]
    {pasamos el campo rllmndo de segundos a formato hora y lo carga en el rllmndo_temp en string}
    if ihoras > 0 then
    begin
      ivalor := Round(ihoras);
      ihor      := ivalor div 3600;
      imin      := (ivalor mod 3600) div 60;
      iseg      := (ivalor mod 3600) mod 60;
      if ihor < 10 then ihort := Format('%.2d', [ihor]) else ihort := FloatToStr(ihor);
      if imin < 10 then imint := Format('%.2d', [imin]) else imint := FloatToStr(imin);
      if iseg < 10 then isegt := Format('%.2d', [iseg]) else isegt := FloatToStr(iseg);
      FieldByName('rllmndo_temp').AsString := ihort + ':' + imint + ':' + isegt;
    end;

el cliente quiere ver en el dbgrid los dos campos de dedicación, en formato segundos y en formato hh:mm:ss, hasta aquí todo bien

El problema lo tengo en que el grid debe pintar determinadas columnas en colores en función del valor del campo (entre ellos está el rllmndo_temp) y para ello utilizo el componente de TCustomizeGrid de Neftali con el código siguiente en el evento OnpaintCellExt

Código Delphi [-]
{horas dedicacion EN STRING QUE CONVERTIMOS A SEGUNDOS !!!!}
  if (FieldName = 'rllmndo_temp') and (not (Field.IsNull)) then begin
    {pasamos el campo rllmndo de segundos a formato hora y lo carga en el rllmndo_temp}
    ivalort := StrToDateTime(Field.Value);
    DecodeTime(ivalort, ihor, imin, iseg, imseg);
    ivalor := (ihor *3600) + (imin *60) + iseg;

    if (ivalor < 3600) then begin
      ChangeColor := True;
      CellColor := clRed;
    end;
    if (ivalor >= 3600) and (ivalor <= 4499) then begin
      ChangeColor := True;
      CellColor := $0000BFFF;
    end;
    if (ivalor >= 4500) then begin
      ChangeColor := True;
      CellColor := $0000FF80; //clGreen;
    end;
  end;

pero hay registros dónde el valor del campo calculado rllmndo_temp (string) es del tipo 39:20:00 y no se puede pasar a DateTime.

Había pensado en leer la cadena del campo caracter a caracter para obtener los valores de las horas, minutos y segundos antes de pintar la celda de ese campo string, pero no se como hacerlo.

Muchas gracias por la ayuda !!!!
__________________
Toni | blog
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Número de caracteres por línea al leer correo poliburro Internet 4 12-07-2008 20:09:05
como leer n caracteres de un archivo manolop Varios 6 18-12-2007 22:50:06
Crear un String de mas de 256 caracteres luigi_cr OOP 9 20-11-2007 16:19:48
Problemas con string de mas de 255 caracteres... jaderl Varios 5 06-01-2005 21:40:32
String de mas de 255 caracteres ctronx Varios 6 01-10-2004 17:58:23


La franja horaria es GMT +2. Ahora son las 23:02:49.


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
Copyright 1996-2007 Club Delphi