Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Si es como dices, que debe computarse dese una fecha más temprana puedes modificarla.

Estoy viendo porqué algo no me está andando el código... me parece raro. No logro ver donde estoy metiendo mal la pata.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 31-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Bueno, creo que ahora si podría andar. Al menos, la he probado y está funcionando. Se pueden hacer algunas comprobaciones extras, pero creo que la idea está:

Código Delphi [-]
function TForm1.AnnoALetra(Anno, AnnoIni: integer): string;
const
 LETRAS = 'KLMNPRSTVXZABCDEFHJ';
var dif: integer;
begin
 dif := Anno mod AnnoIni; //AnnoIni es el primer año a computar
 dif := dif mod Length(LETRAS);
 result := LETRAS[dif+1];
end;

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 31-07-2007 a las 19:49:37.
Responder Con Cita
  #3  
Antiguo 31-07-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Cita:
Empezado por Delphius
Si es como dices, que debe computarse dese una fecha más temprana puedes modificarla.

Estoy viendo porqué algo no me está andando el código... me parece raro. No logro ver donde estoy metiendo mal la pata.
Saludos,
Yo lo que pienso, es jugar con la cantidad de Letras (18), y sus condiciones de <, > e =. Puesto a que puedo hacer:

Código Delphi [-]
function AnnoALetra(Anno: integer): string;
const
 LETRAS = 'KLMNPRSTVXZABCDEFHJ';
var dif: integer;
begin
 dif := Anno mod  2000; //2000 es el primer año a contabilizar
 if dif<=18 then result := LETRAS[dif + 1];
 if dif>18 then result := LETRAS[dif - 18];
end;

Lo que me faltaria, es usar una variable multiplo de 18, cosa de mantener su valor de entre 0 y 18.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 31-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Mamu, acabo de editar mi función anterior... chequeala. El segundo mod hace lo que pides: que el rango oscile entre 0 y 18.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 31-07-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Cita:
Empezado por Delphius
Mamu, acabo de editar mi función anterior... chequeala. El segundo mod hace lo que pides: que el rango oscile entre 0 y 18.

Saludos,
La he chequeado, pero el problema esta en el año de inicio, ya que segun varie este, me desplaza el orden ciclico. La letra T equivale al año 2007, y no debe varias segun el año de inicio a computar, ya sea que arranque del 2000, como del 1950, llegado al año 2007, deberia corresponderse con la letra T.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #6  
Antiguo 31-07-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 22
basti Va por buen camino
Modificando un poco la función
Código Delphi [-]
function AnnoALetra(Anno: integer): string;
const
 LETRAS = 'KLMNPRSTVXZABCDEFHJ';
var dif: integer;
begin
  // para los años mayores de 2000
 if anno - 2000 >= 0 then
   dif := (Anno - 2000) mod 19 + 1
 else
   dif := 19 - (2000 - Anno) mod 19;
 result := LETRAS[dif];
end;

No lo probé pero creo que la solución va por ahí.

Edito: el número de letras son 19 así que cambié algo

Última edición por basti fecha: 31-07-2007 a las 21:30:17.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
condición de query Dantael SQL 3 06-06-2007 05:44:37
filtrado por condicion aanil OOP 3 03-08-2006 19:13:22
Finalizar una Condición jdangosto OOP 3 02-12-2005 08:57:38
condicion en un edit !! romansiux Varios 5 10-04-2005 02:25:40
condicion IF haffo Varios 11 06-11-2003 22:36:04


La franja horaria es GMT +2. Ahora son las 07:21:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi