PDA

Ver la Versión Completa : Pasar codigo de VB a Delphi


jafera
04-07-2013, 15:54:59
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


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
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í


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 (http://www.thevbprogrammer.com/Ch04/04-08-StringFunctions.htm)
VB Date-Handling Functions (http://visualbasic.freetutes.com/learn-vb6/lesson6.3.html)
Val (http://msdn.microsoft.com/es-es/library/k7beh1x9%28v=vs.80%29.aspx)
Right (http://msdn.microsoft.com/en-us/library/dxs6hz0a%28v=vs.80%29.aspx)
Mid (http://msdn.microsoft.com/es-es/library/05e63829%28v=vs.80%29.aspx)
Date$ (http://www.vb6.us/tutorials/date-time-functions-visual-basic)

Creo que podría traducirse como:

...
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,


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


Revisa esta información:

Case : http://www.delphibasics.co.uk/RTL.asp?Name=Case

Case statement that *accepts* string values : http://delphi.about.com/cs/adptips2002/a/bltip0202_5.htm

Delphi String to Enum : http://delphi.about.com/cs/adptips2003/a/bltip0203_5.htm

Delphi Enum to String : http://delphi.about.com/cs/adptips2003/a/bltip0103_5.htm


Te sugiero consultar:

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/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip
Espero sea útil :)

Nelson.