Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pasar codigo de VB a Delphi (https://www.clubdelphi.com/foros/showthread.php?t=83594)

jafera 04-07-2013 15:54:59

Pasar codigo de VB a Delphi
 
Hola a todos.

Alguien me puede echar un cable en como traducir el case siguiente?
Este está escrito en VB y lo quiero usar en Delphi, o algo parecido

Código:


Select Case codi
        Case 1
            cursa.categoria = "E-UCI": cursa.competicion = "C"
        Case 2
            cursa.categoria = "ELITE": cursa.competicion = "C"
        Case 3
            cursa.categoria = "SUB23": cursa.competicion = "C"
        Case 80
            cursa.categoria = "SUB23": cursa.competicion = "C"
        Case 4
            min% = Val(Right$(date$, 4)) - 17
            max% = Val(Right$(date$, 4)) - 18
            If Val(Mid$(cursa.codiUCI, 4, 4)) = min% Then
                cursa.categoria = "JUN-1": cursa.competicion = "C"
            ElseIf Val(Mid$(cursa.codiUCI, 4, 4)) = max% Then
                cursa.categoria = "JUN-2": cursa.competicion = "C"
            End If
End Select

Lo que no acabo de entender es la forma en que VB realiza el calculo de la diferencia entre el año actual y el año de la fecha de nacimiento para calcular la edad.

Como siempre gracias por adelantado a los que me leeis.

Saludos

Josep

Casimiro Notevi 04-07-2013 16:59:28

Código Delphi [-]
Case colour of
  Red    : ShowMessage('The colour is Red');
  Green  : ShowMessage('The colour is Green');
  Blue   : ShowMessage('The colour is Blue');
  Yellow : ShowMessage('The colour is Yellow');
  else ShowMessage('The colour is Unknown!');
end;

ElDioni 04-07-2013 17:03:44

Hola,

sería algo así

Código Delphi [-]
case codi of
   1:
     begin
       cursa.categoria:='E-UCI';
       cursa.competicion:='C';
     end;
   2:
     begin
       ...
   end;

en cuanto a lo de la diferencia de fechas podrías hacerlo con la función yearsbetween (librería DateUtils), que te devuelve los años que hay entre las dos fechas que le pases a la función, en este caso la de nacimiento y la actual (Date).

saludos.

ecfisa 04-07-2013 17:12:08

Hola josep.

La verdad mi conocimiento en VB es nulo, pero basándome en estos enlaces:
VB String-Handling Functions
VB Date-Handling Functions
Val
Right
Mid
Date$

Creo que podría traducirse como:
Código Delphi [-]
  ...
  cursa.competicion := 'C';
  case codi of
    1  : cursa.categoria := 'E-UCI';
    2  : cursa.categoria := 'ELITE';
    3  : cursa.categoria := 'SUB23';
    4  : begin
           min := StrToInt(RightStr(DateToStr(Date), 4)) - 17;
           max := StrToInt(RightStr(DateToStr(Date), 4)) - 18;
           if StrToInt(Copy(cursa.codiUCI,4,4)) = min then
             cursa.categoria := 'JUN-1'
           else if StrToInt(Copy(cursa.codiUCI,4,4)) = max then
             cursa.categoria := 'JUN-2';
         end;
    80 : cursa.categoria := 'SUB23';
  end;
  ...
Revisa si obtenes los resultados esperados.

Saludos :)

Pd: Sé benévolo en la sentencia, acordate que es mi primera vez en VB :o (y espero la última :D)

jafera 04-07-2013 17:25:04

Gracias por las respuestas, había mirado la ayuda de delphi acerca de case y no veia bien la sintaxis.

Si quiero que este proceso se realice despues de cargar los daros en la tabla como deberia lanzar la sentencia case?

Es decir cargo los datos en la tabla en uno de los campos tengo el valor codigo con el valor correspondiente (case 1, case 2,...,case n) y en otro campo vacio para llenar con el resultado del case.

Supongo que será más rápido llenar este campo (categoria) todos de una vez, que ver el valor que tiene el código y realizar la sentencia case por cada registro al importar.

Saludos

Josep

jafera 04-07-2013 17:42:17

Hola Ecfisa, creo que hemos respondido a la par y tu respuesta se ha adelantado a mi comentario.

Gracias, lo pongo en pruebas y comento.

Lo que necesito saber es como actualizo la tabla con el case, ahora estoy reescribiendo todo el case que tiene aproximadamente 70 categorias distintas y tengo código a rascar para rato.

Saludos

Josep

nlsgarcia 04-07-2013 18:09:15

jafera,

Cita:

Empezado por jafera
...había mirado la ayuda de delphi acerca de case y no veia bien la sintaxis...

Revisa esta información:
Te sugiero consultar:
Cita:

Delphi Basics : http://www.delphibasics.co.uk/

A Beginner's Guide to Delphi Programming : http://delphi.about.com/od/beginners/a/delphicourse.htm

La Cara Oculta de Delphi 4 : http://terawiki.clubdelphi.com/Delph...phi_4_pdf_.zip
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 10:29:38.

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