Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Dudas con Array

Tengo esta funcion. Ella tiene que me decir si es o no feriado en una determinada fecha. Puzo los feriados fijos y nacionales en un Array. Hizo un decodedate para tener el dia y mes. Entonces comparo lo campos del Array con esta variable y saber si es o no feriado. Que pasa es que no consigo hacer una atribuicion se la variable String con el campo del array. Vea mi codigo:
function
Código Delphi [-]
TFormula.EferiadoFixo(Data: TDateTime): Boolean;
var
  ano,mes,dia: word;
  diames : String;
  dferiado: Array[0..7] of String;
begin
  dferiado[0] := '01/01';
  dferiado[1] := '21/04';
  dferiado[2] := '01/05';
  dferiado[3] := '07/09';
  dferiado[4] := '12/10';
  dferiado[5] := '02/11';
  dferiado[6] := '15/11';
  dferiado[7] := '25/12';
  DecodeDate(Data,ano,mes,dia);
  diames := IntToStr(dia) + '/' + IntToStr(mes);
  if diames = dferiado then // El error estas aca
    Result := True;
end;
Responder Con Cita
  #2  
Antiguo 19-11-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Paulao, no puedes comparar directamente tu String con tu array, tienes que hacer una busqueda en tu array:

Código Delphi [-]
  dferiado: Array[0..7] of String;
begin
  Result := False;
  dferiado[0] := '01/01';
  dferiado[1] := '21/04';
  dferiado[2] := '19/11';
  dferiado[3] := '07/09';
  dferiado[4] := '12/10';
  dferiado[5] := '02/11';
  dferiado[6] := '15/11';
  dferiado[7] := '25/12';
  DecodeDate(Data,ano,mes,dia);
  diames := IntToStr(dia) + '/' + IntToStr(mes);
  for i:=0 to High(dferiado) do
   if diames = dferiado[i] then 
    begin
     Result := True;
     exit;
    end;
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 19-11-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola de nuevo, también puedes utilizar un StringList para llenar la lista de feriados, el cual lo llenas solo al principio (osea no dentro de tu función), porque de la forma que esta cada ves que llamas a tu función llenas nuevamente tu arreglo y para buscar utilizas la función IndexOf.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 19-11-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Hola, Caro, ya tenio hizo asi y no funciono. cambie la fecha de mi computadora para 02/11/2010 y no funciono, pues deberia traer True el result y está como false. Ve mi codigo abajo:
Código Delphi [-]
function TFormula.EferiadoFixo(Data: TDateTime): Boolean;
var
  ano,mes,dia: word;
  diames : String;
  dferiado: Array[0..7] of string;
  i: integer;
begin
  Result := False;
  dferiado[0] := '01/01';
  dferiado[1] := '21/04';
  dferiado[2] := '01/05';
  dferiado[3] := '07/09';
  dferiado[4] := '12/10';
  dferiado[5] := '02/11';
  dferiado[6] := '15/11';
  dferiado[7] := '25/12';
  DecodeDate(Data,ano,mes,dia);
  diames := IntToStr(dia) + '/' + IntToStr(mes);
  for i := 0 to high(dferiado) do
    if diames = dferiado[i] then
      Result := True;
end;
Responder Con Cita
  #5  
Antiguo 19-11-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Resolvi. El problema era que quando el dia del mes era meno que 10, entonces la variable diames quedava asi:
2/11 y el array era 02/11
Puzo un zero a la izquierda y funciono. Gracias a Caro y a los demas.
Responder Con Cita
Respuesta



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
problemas con array o array noodle_ OOP 7 19-06-2008 22:30:57
BMP en un array lacatella Gráficos 2 27-07-2006 20:36:27
Consulta con array tgsistemas SQL 1 30-05-2005 20:23:41
Como Asignar Variable Tipo Array de Tform a otro Array del Mismo tipo morfeo21 Varios 5 17-08-2004 17:39:51
Array esquerda21 Varios 7 26-02-2004 19:27:21


La franja horaria es GMT +2. Ahora son las 14:21:36.


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