Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Migrar desde VB6 a Delphi

Hola amigos,

Alguien que haya migrado algun programa desde VB6 a Delphi me podria indicar como se traduce esta instruccion a Delphi ?

Obl = 84381.448 - 4680.93 * T: P = T * T


Sobre todo, la parte de P = T * T

Gracias de antemano
Responder Con Cita
  #2  
Antiguo 25-04-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Por lo que acabo de ver, los dos puntos ":" en VB se usan para separar una línea de código de otra (para poner mas de una línea de código por renglón).
Es decir que traducido a Delphi sería algo así:
Código Delphi [-]
...
var
  Obl,P,T: Double;
begin
  T   := {un valor} ;
  Obl := 84381.448 - 4680.93 * T; 
  P   := T * T;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-04-2020 a las 00:36:29.
Responder Con Cita
  #3  
Antiguo 25-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Muchas gracias amigo!!!!
Responder Con Cita
  #4  
Antiguo 26-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Y esta linea de codigo como se pudiese migrar teniendo en cuent que las variables con Double (T,L,B,R)

'Return the L,B,R values in a data vector string
LBR_For_Venus = L & "|" & B & "|" & R


Gracias de antemano
Responder Con Cita
  #5  
Antiguo 26-04-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Nuevamente en google:
Cita:
El operador & tiene interés para concatenar cadenas. Por ejemplo "Hoy puede" & "ser un gran día" equivale a "Hoy puede ser un gran día”.
...
Entonces aquí,
Código:
LBR_For_Venus = L & "|" & B & "|" & R
esta concatenando L, B y R con los caracteres "|", algo así como:
Código Delphi [-]
  ... FloatToStr(L) + '|' + FloatToStr(B) + '|' + FloatToStr(R);
Pero, ¿ que es LBR_For_Venus ? Vi que en otra publicación tuya figura como una función...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 26-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Hola y gracias

LBR_For_Venus es una funcion que lee coeficientes de unas matrices y los devuelve en una cadena de 3 resultados diferentes

Estoy tratando de migrar eso desde VB6 a Delphi 7
Responder Con Cita
  #7  
Antiguo 26-04-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No conozco VB y tal vez lo permita, pero en Delphi, aquí tenemos un problema, ya que no es posible asignarle un valor al resultado de una función.

Es decir no se puede hacer:
Código Delphi [-]
...
function LBR_For_Venus: string;
begin
  ...
end;

...

var
 T,L,B,R : Double;
begin
  ...
  LBR_For_Venus := FloatToStr(L) + '|' + FloatToStr(B) + '|' + FloatToStr(R); // <- ¡ Error !

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 26-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
La funcion en VB6 pinta asi


Public Function LBR_For_Venus(At_JDE)
' LEVEL 0

Dim L As Double
Dim B As Double
Dim R As Double
Dim T As Double

' Compute T as Julian millennia since J2000.0
T = (At_JDE - 2451545#) / 365250

' Compute heliocentric, ecliptical Longitude L in radians
L = Venus_L01(T) + Venus_L11(T) + Venus_L21(T) + Venus_L31(T) _
+ Venus_L41(T) + Venus_L51(T)

B = Venus_B01(T) + Venus_B11(T) + Venus_B21(T) + Venus_B31(T) _
+ Venus_B41(T) + Venus_B51(T)

R = Venus_R01(T) + Venus_R11(T) + Venus_R21(T) + Venus_R31(T) _
+ Venus_R41(T) + Venus_R51(T)

' Convert longitude and latitude from radians into degrees.
L = L * 45 / Atn(1)
If Abs(L) >= 360 Then L = L - 360 * Int(L / 360)
If L < 0 Then L = L + 360

B = B * 45 / Atn(1)

' Return the L,B,R values in a data vector string
LBR_For_Venus = L & "|" & B & "|" & R

End Function

Esto es lo que estoy tranado de migrar a Delphi
Responder Con Cita
  #9  
Antiguo 26-04-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 37
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Esta traducción se corresponde con la información que brindas y no te va a dar errores de compilación siempre que traduzcas bien las funciones Venus_... , pero me es imposible saber si devuelve los valores correctos desconociendo que es lo que hace.

Código Delphi [-]
function LBR_For_Venus(LBR_For_Venus(At_JDE:extended): string;
var
  L,B,R,T: Double;
begin
  T := (At_JDE - 2451545) / 365250;
  L := Venus_L01(T) + Venus_L11(T) + Venus_L21(T) + Venus_L31(T) +
       Venus_L41(T) + Venus_L51(T);
  B := Venus_B01(T) + Venus_B11(T) + Venus_B21(T) + Venus_B31(T) +
       Venus_B41(T) + Venus_B51(T);
  R := Venus_R01(T) + Venus_R11(T) + Venus_R21(T) + Venus_R31(T)  +
       Venus_R41(T) + Venus_R51(T);
  L := L * 45 / ArcTan(1);
  if Abs(L) >= 360 then
    L := L - 360 * Int(L / 360);
  if L < 0 then
    L := L + 360;
  B := B * 45 / ArcTan(1);
  Result := FloatToStr(L) + '|' + FloatToStr(B)+ '|' + FloatToStr(R);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-04-2020 a las 22:23:30. Razón: corrección de conversión
Responder Con Cita
  #10  
Antiguo 26-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Muchas gracias estimado

Voy a probar y le comento
Responder Con Cita
  #11  
Antiguo 27-04-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
La funcion en VB6 pinta asi


Public Function LBR_For_Venus(At_JDE)
' LEVEL 0

Dim L As Double
Dim B As Double
Dim R As Double
Dim T As Double

' Compute T as Julian millennia since J2000.0
T = (At_JDE - 2451545#) / 365250

' Compute heliocentric, ecliptical Longitude L in radians
L = Venus_L01(T) + Venus_L11(T) + Venus_L21(T) + Venus_L31(T) _
+ Venus_L41(T) + Venus_L51(T)

B = Venus_B01(T) + Venus_B11(T) + Venus_B21(T) + Venus_B31(T) _
+ Venus_B41(T) + Venus_B51(T)

R = Venus_R01(T) + Venus_R11(T) + Venus_R21(T) + Venus_R31(T) _
+ Venus_R41(T) + Venus_R51(T)

' Convert longitude and latitude from radians into degrees.
L = L * 45 / Atn(1)
If Abs(L) >= 360 Then L = L - 360 * Int(L / 360)
If L < 0 Then L = L + 360

B = B * 45 / Atn(1)

' Return the L,B,R values in a data vector string
LBR_For_Venus = L & "|" & B & "|" & R

End Function

Esto es lo que estoy tranado de migrar a Delphi

No olvides usar las etiquetas para el código fuente, que ya no eres un novato aquí


Responder Con Cita
  #12  
Antiguo 27-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
Relajate,

ese simbolo es para sintaxis Delpi pero no sabia que tenia que hacerlo con cualquier codigo de otro lenguaje tambien.

Tomado en cuenta para la proxima vez
Responder Con Cita
  #13  
Antiguo 27-04-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por compuin Ver Mensaje
Relajate,
ese simbolo es para sintaxis Delpi pero no sabia que tenia que hacerlo con cualquier codigo de otro lenguaje tambien.
Tomado en cuenta para la proxima vez
Estoy muy relajado
Tal y como decimos en nuestra guía de estilo, siempre ha de usarse para poner código fuente, se lee mucho mejor.
Gracias, saludos.
Responder Con Cita
  #14  
Antiguo 27-04-2020
compuin compuin is offline
Miembro
 
Registrado: oct 2010
Posts: 230
Poder: 15
compuin Va por buen camino
En VB6 esta formula se migra tal como esta o hhay que hacerle alguna conversion en radianes en Delphi ?

Código Delphi [-]
' ====================================================================

' Function to convert geocentric ecliptical coordinates in degrees
' into corresponding right ascension and declination and return
' coordinates as a delimited 2D vector in the form  RA|Decl

  Public Function EQU_Lng_Lat_Equiv_To(Ecl_Lng, Ecl_Lat, Obliquity)
' LEVEL 0

  Dim Q As Variant

  Dim Sin_e As Double
      Sin_e = Sin(Obliquity * Atn(1) / 45)

  Dim Cos_e As Double
      Cos_e = Cos(Obliquity * Atn(1) / 45)

  Dim x As Double

  Dim y As Double

  x = Sin(Ecl_Lng * Atn(1) / 45) * Cos_e - Tan(Ecl_Lat * Atn(1) / 45) * Sin_e

  y = Cos(Ecl_Lng * Atn(1) / 45)

  EQU_Lng_Lat_Equiv_To = Atn(y / x) * 45 / Atn(1)
  If x < 0 Then EQU_Lng_Lat_Equiv_To = EQU_Lng_Lat_Equiv_To + 180

     Q = Sin(Ecl_Lat * Atn(1) / 45) * Cos_e + Cos(Ecl_Lat * Atn(1) / 45) * Sin_e _
       * Sin(Ecl_Lng * Atn(1) / 45)

  EQU_Lng_Lat_Equiv_To = EQU_Lng_Lat_Equiv_To & "|" & Atn(Q / Sqr(-Q * Q + 1)) * 45 / Atn(1)
  
  End Function
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
Migrar datos desde otra BD a Firebird lbidi Firebird e Interbase 2 28-09-2017 14:29:18
Migrar desde Firebird 2.1.3 a 2.5.3 Neeruu Firebird e Interbase 1 28-01-2015 14:17:08
Migrar desde IBX 6 a FB 2.5 gorsan Firebird e Interbase 6 11-09-2014 22:41:12
Porque deberia migrar desde Borland Delphi 7 a Codegear RAD Studio Dephi 2007 rmendoza83 Varios 19 11-03-2009 16:25:39
Duda para migrar desde Access alcides MS SQL Server 2 22-11-2005 18:17:07


La franja horaria es GMT +2. Ahora son las 04:59:08.


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