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 22-10-2012
cesar.zapata cesar.zapata is offline
Registrado
NULL
 
Registrado: oct 2012
Posts: 7
Poder: 0
cesar.zapata Va por buen camino
Problema con las comandas de STRING

Hola soy nuevo en este foro de delphi , realmente no conozco nada de este programa pero por cuestiones de la universidad hemos empezado a utilizar este programa que realmente resulta interesante.

Me han pedido Hacer un algoritmo referido a este tema

Escribir un algoritmo (y programa) que dados:
 Un día (dd): variable unDia
 Un mes (mm): variable unMes
 Un año (aaaa) variable unAny
Deberá:
1. Definir una variable lógica anyOK
Se aceptan años entre 1900 y 2100.
2. Definir una variable lógica mesOK
El mes debe estar incluido (naturalmente) en el rango 1-12.
3. Definir una variable lógica diaCreible (de 1 a 31)
Ya sabemos que todos los meses no son de 31 días y menos febrero pero eso lo
resolveremos en un próximo ejercicio.
4. Escribir una expresión lógica que dado un año (variable unAny), diga si es o no bisiesto

////La duda es siguiente como tengo que utilizar la comanda STRING para que la fecha que tenga que introducir el usuario sea la indicada dd/mm//aaaa , desde ya muchas gracias por prestar atencion a mi duda ///
Responder Con Cita
  #2  
Antiguo 22-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por cesar.zapata Ver Mensaje
La duda es siguiente como tengo que utilizar la comanda STRING para que la fecha que tenga que introducir el usuario sea la indicada dd/mm//aaaa
Puedes usar un componente tdatetimepicker o puedes usar un componente maskedit, le asignas la máscara y nada más.

Otra cosa es que quieras hacerlo tú mismo, para aprender, en pascal.
Entonces es como cualquier otro lenguaje, sólo que usando los comandos y funciones apropiados.
Responder Con Cita
  #3  
Antiguo 23-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por cesar.zapata Ver Mensaje
La duda es siguiente como tengo que utilizar la comanda STRING
Yo diría que primero empecemos con clases de ortografía, es comandO
Y en segundo lugar, ¡En Delphi no existen comandos! Y si existiera el "comando", dudo que se llame string
String es un tipo de dato, pensado para almacenar caracteres alfanuméricos.

¿Y si empezamos a estudiar mejor las nociones del lenguaje primero y describir las dudas puntuales de forma apropiada? ¿En que tienes dudas? ¿Que has estado haciendo y te trabaste?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 23-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
cesar.zapata,

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, ComCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MaskEdit1: TMaskEdit;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function Valida_Date1(Day, Month, Year : Integer) : Boolean;
  function Valida_Date2(Day, Month, Year : Integer) : Boolean;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Función 1 de Validación de Fecha
function Valida_Date1(Day, Month, Year : Integer) : Boolean;
var
   AuxYear : Boolean;

begin

  // Valida que Dia, Mes y Año sean diferente de cero

  if Day = 0 then
   begin
      ShowMessage('Día Invalido');
      Result := False;
      Exit;
   end;

   if Month = 0 then
   begin
      ShowMessage('Mes Invalido');
      Result := False;
      Exit;
   end;

   if Year = 0 then
   begin
      ShowMessage('Año Invalido');
      Result := False;
      Exit;
   end;

   // Valida que el mes este entre 1 y 12
   if (Month < 1) OR (Month > 12) then
   begin
      ShowMessage('Mes Invalido');
      Result := False;
      Exit;
   end;

   // Valida si el Año es Bisiesto
   AuxYear := False;

   if ((Year Mod 4) = 0) and ((Year Mod 100) <> 0) then
   begin
      AuxYear := True;
   end;

   if ((Year Mod 4) = 0) and ((Year Mod 100) = 0) and ((Year Mod 400) = 0) then
   begin
      AuxYear := True;
   end;

   // Valida que el rango correcto de días según el mes
   case Month of
       9, 4, 6, 11:
          if (Day < 1) or (Day > 30) then
          begin
             ShowMessage('Día Invalido');
             Result := False;
             Exit;
          end;
       2:
          if (Month = 2) and (AuxYear) then
          begin
             if (Day < 1) or (Day > 29) then
             begin
                ShowMessage('Día Invalido');
                Result := False;
                Exit;
             end;
          end
          else
          begin
             if (Day < 1) or (Day > 28) then
             begin
                ShowMessage('Día Invalido');
                Result := False;
                Exit;
             end;
          end;
       1, 3, 5, 7, 8, 10, 12:
          if (Day < 1) or (Day > 31) then
          begin
             ShowMessage('Día Invalido');
             Result := False;
             Exit;
          end;
   end;

   Result := True;

end;

// Función 2 de Validación de Fecha
function Valida_Date2(Day, Month, Year : Integer) : Boolean;
var
  ValDate : TDateTime;
begin

  Try
     // Usa la función EncodeDate para validar la fecha
     ValDate := EncodeDate(Year, Month, Day);
  Except
        Result := False;
        Exit;
  end;

  Result := True;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

  // Formatea la fecha
  MaskEdit1.EditMask := '00-00-0000';

  // Coloca la fecha actual
  MaskEdit1.Text :=  FormatDateTime('dd/mm/yyyy', Now);

  MaskEdit1.AutoSelect := False;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   StrDate : String;
   Day, Month, Year : Integer;
begin

   StrDate := MaskEdit1.Text;
   Day := StrToInt(Copy(StrDate,1,2));
   Month := StrToInt(Copy(StrDate,4,2));
   Year := StrToInt(Copy(StrDate,7,4));

   // Validata la fecha en forma programática detallada (Tipo Pascal)
   If Not Valida_Date1(Day,Month,Year) then ShowMessage('Fecha Invalida');

end;

procedure TForm1.Button2Click(Sender: TObject);
var
   StrDate : String;
   Day, Month, Year : Integer;
begin

   StrDate := MaskEdit1.Text;
   Day := StrToInt(Copy(StrDate,1,2));
   Month := StrToInt(Copy(StrDate,4,2));
   Year := StrToInt(Copy(StrDate,7,4));

   // Valida la fecha usando la función EncodeDate
   If Not Valida_Date2(Day,Month,Year) then ShowMessage('Fecha Invalida');

end;

end.
En el código anterior tienes dos funciones de validación de fechas, manejo de Strings y uso del control MaskEdit que te sirviran de base para tu proyecto.

Espero sea útil

Nelson

Última edición por nlsgarcia fecha: 23-10-2012 a las 01:12:33.
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
Problema al insertar String en MySql jpgonzalez MySQL 9 07-02-2012 21:48:34
Problema al convertir a string Fita Varios 3 24-12-2005 16:43:55
Problema con almacenamiento en String Moises22 Varios 5 29-09-2005 14:58:09
Problema en consulta con String T-man Firebird e Interbase 5 25-02-2005 11:41:50
Problema con un STRING Tecnic2 OOP 11 19-11-2004 16:48:26


La franja horaria es GMT +2. Ahora son las 23:37:30.


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