Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Llenar array (https://www.clubdelphi.com/foros/showthread.php?t=94453)

compuin 17-02-2020 20:38:54

Llenar array
 
Hola amigos, estoy tratando de crear un array de la siguiente forma



Código Delphi [-]
planet    : array[1..12] of double;

Código Delphi [-]
{ Calculo de los Planetas }
      for i := SE_SUN to SE_MEAN_NODE do
        begin
          swe_calc_ut(Date.JulDay, i, iflag, xx[0], serr);

          { Coordenadas Eclipticas }
          lg:= xx[0];    //Longitud
          lt:= xx[1];    //Latitud

          for i:= 1 to 12 do
               planet[i]:= xx[0];

Lo cieeto es que no funciona

Alguna sugerencia ?

Casimiro Notevi 17-02-2020 20:49:57

¿Qué es se_sun?
¿Qué es se_mean_node?
¿Qué es swe_calc_ut?
¿Qué es iflag?
¿Qué es xx?
¿Qué es serr?
¿Qué es lg?
¿Qué es lt?
Y aparte de eso, ¿qué es lo que no funciona?
Y pon todo tu código involucrado.

Cita:

Empezado por compuin
Lo cieeto es que no funciona
Alguna sugerencia ?


compuin 17-02-2020 21:08:27

Cita:

Empezado por Casimiro Notevi (Mensaje 535746)
¿Qué es se_sun?
¿Qué es se_mean_node?
¿Qué es swe_calc_ut?
¿Qué es iflag?
¿Qué es xx?
¿Qué es serr?
¿Qué es lg?
¿Qué es lt?
Y aparte de eso, ¿qué es lo que no funciona?
Y pon todo tu código involucrado.

Código Delphi [-]
var
  i, iflag  : integer;
  xx     : Array[0..5] of double;
  serr   : Array[0..255] of Char;
  hcusps : array[0..12] of double;
  lg, lt : double;

Esta es la funcion

Código Delphi [-]
function swe_calc_ut(tjd         : double;    {Julian day, Universal Time}
                     ipl         : Integer;   {planet number}
                     iflag       : Longint;   {flag bits}
                     var xx      : double;    {first of 6 doubles}
                     sErr        : PChar      {Error-String}
): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc_ut@24';

Código Delphi [-]
var xx
devuelve lo siguiente

xx =array of 6 doubles for longitude, latitude, distance, speed in long., speed in lat., and speed in dist.

Necesito que me devuelva xx=0;

compuin 17-02-2020 21:14:40

Necesito es

Código Delphi [-]
result := planet[i];

cloayza 17-02-2020 21:20:47

Yo necesito tantas cosas....
:D

compuin 17-02-2020 21:21:49

Cita:

Empezado por cloayza (Mensaje 535750)
Yo necesito tantas cosas....
:D

Que te puedo decir....

Casimiro Notevi 17-02-2020 21:45:35

Cita:

Empezado por compuin (Mensaje 535748)
Necesito que me devuelva xx=0;

No se entiende nada, y de todas formas, si quieres que devuelva xx=0, entonces ¿para qué quieres la función?

compuin 17-02-2020 21:50:16

Que no entiendes? Te puse toda la informacion que me pedistes

compuin 17-02-2020 21:53:38

Lo que requiero es que el resultado de lg:= xx[0]; lo pueda agregar a un array que llamo planet[i]

Neftali [Germán.Estévez] 18-02-2020 12:08:24

Cita:

Empezado por compuin (Mensaje 535754)
Lo que requiero es que el resultado de lg:= xx[0]; lo pueda agregar a un array que llamo planet[i]


Código Delphi [-]
planet[i] := lg;
planet[i] := xx[0];
Eso es correcto.


Cita:

Empezado por compuin (Mensaje 535745)
Lo cierto es que no funciona. Alguna sugerencia ?

No se entiende si no funciona porque no compila o porque el valor esperado no es el correcto. En el segundo caso es imposible saber porqué, ya que no podemos ejecutarlo.

Cita:

Empezado por compuin (Mensaje 535748)
devuelve lo siguiente
Necesito que me devuelva xx=0;

No se entiende.
Difiere de la pregunta origional.

Cita:

Empezado por compuin (Mensaje 535749)
Necesito es
result := planet[i];

Pues lo mismo, esto es otra cosa y lo que pones es correcto.

Código Delphi [-]
result := planet[i];
Esto es iuna asignación y es correcta. Otra cosa es que te devuelva un valor que no esperas, pero eso para nosotros en IMPOSIBLE saber porqué pasa.

Cita:

Empezado por compuin (Mensaje 535753)
Que no entiendes? Te puse toda la informacion que me pedistes

Si te das cuenta, y es lo que creo que te intentan explicar de una forma más o menos clara, es que has puestos mucha información, pero sin orden y sin una explicación clara.
Has puesto información inconexa, desordenada y todavía no queda claro cual es la pregunta.

Te recomiendo que reformulaes la pregunta y la releas antes de publicarla.
Des los datos relevantes y preguntes algo concreto.

engranaje 18-02-2020 15:59:10

Después de lo que te han explicado para que tus preguntas sean lo suficientemente claras. Hago un apunte sobre el código que has pegado. Tienes un For dentro de otro fFor y la variable que se utiliza en ambos es "i".

En la primera iteración sobre "for i := SE_SUN to SE_MEAN_NODE do" el valor de "i" será SE_SUN.

Ahora adivinando el resto del código que no has puesto, deduzco que en la siguiente iteración sobre "for i := SE_SUN to SE_MEAN_NODE do" "i" valdrá 12.

En ese momento puede suceder que SE_MEAN_NODE sea menor que 12 en cuyo caso se saldrá del For tras solo una iteración, pero si SE_MEAN_NODE es mayor que 12 entonces lo más probable es que nunca jamás puedas salir del primer For.

Deberías reformular la pregunta cómo te han dicho. De todas formas, yo me aseguraría de que realmente necesitas que los dos For utilicen la misma variable. Es más diría que mi Delphi al menos cuando intenta compilar algo así muestra un error del tipo "Assignment to FOR-Loop variable 'i'"

Neftali [Germán.Estévez] 19-02-2020 09:13:39

Otra opción que no se utiliza mucho, pero que es muy útil es subir un pequeño proyecto (código) sólo con la parte del código a examinar y en ese caso el muy fácil descargarlo, abrirlo y revisar el comportamiento.

NOTA: Es importante crear un proyecto dummy sólo con el código que da problemas, no como algunos de nuestros clientes, que les pides un ejemplo de código que reproduzca un error y te envían la aplicación completa con 15.000 líneas de código... :o:o:o:o

compuin 19-02-2020 12:34:48

Neftali, saludos y muchas gracias por tu respuesta, es muy educado de tu parte.

Reconozco que no tengo mucha experiencia en programación pero eso no justifica que ciertos foristas respondan un post mío en forma grosera o peyorativa. Si no les gusta lo que pregunto, simplemente no participen ni respondan.

Respeto ante todo.

Neftali [Germán.Estévez] 19-02-2020 12:57:47

Cita:

Empezado por compuin (Mensaje 535787)
...eso no justifica que ciertos foristas respondan un post mío en forma grosera o peyorativa.


Personalmente creo que nadie ha sido grosero. Tal vez un poco de ironía y de humor.
Es una forma de pedirte que hagas las preguntas dedicándoles un poco de tiempo. Al final la gente intenta ayudarte, sino piensa que nadie hubiera respondido.

Casimiro Notevi 19-02-2020 13:42:43

¿Dónde está la grosería? Solamente son muchas dudas. :confused:

Cita:

¿Qué es se_sun?
¿Qué es se_mean_node?
¿Qué es swe_calc_ut?
¿Qué es iflag?
¿Qué es xx?
¿Qué es serr?
¿Qué es lg?
¿Qué es lt?
Y aparte de eso, ¿qué es lo que no funciona?
Y pon todo tu código involucrado.

No se entiende nada, y de todas formas, si quieres que devuelva xx=0, entonces ¿para qué quieres la función?


compuin 19-02-2020 13:57:24

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 535788)
Personalmente creo que nadie ha sido grosero. Tal vez un poco de ironía y de humor.
Es una forma de pedirte que hagas las preguntas dedicándoles un poco de tiempo. Al final la gente intenta ayudarte, sino piensa que nadie hubiera respondido.

Respeto antes que nada, las ironias creo estan de mas

ecfisa 19-02-2020 20:09:14

Hola compuin.

Leí todos tus mensajes y no entiendo el problema. Sincenramente creo que es por que la información que nos das es escasa o inconéxa.

En esto de comunicarnos es fundamental que nos pongamos de acuerdo, tanto el emisor como el receptor.
No me cabe duda alguna que tu intención era explicar el problema lo mejor posible así como también, que los que participaron en las respuestas tuvieron la firme intención de ayudarte desinteresadamente como siempre lo hacen.

Lo importante aquí, creo yo, es que soluciones tu problema y no seguir en discuciones inconducentes. Rebobinemos y por favor plantea el problema de otro modo ya que del anterior no logramos entenderlo.

Saludos :)

escafandra 19-02-2020 20:53:46

Yo tampoco entiendo bien el asunto, faltan cosas. Creo que lo que pretende compuin es algo como esto:

Código Delphi [-]
var
  i, iflag: integer;
  xx:       array[0..5] of double;
  planet:   array [1..12] of double;
  serr:     PChar;
begin
  for i:= 1 to 12 do
  begin
    swe_calc_ut(Date.JulDay, i, iflag, xx[0], serr);
    planet[i]:= xx[0];
  end;
end;

Asumiendo que:
1.- Los indices de planeta van de 1 a 12 (pueden ser 0-11) según la función no documentada swe_calc_ut
2.- La fecha se sabrá y se inicializará.
3.- iflag se conocerá y se inicializará.

Saludos.

compuin 19-02-2020 20:56:18

Hola escafandra

Efectivamente, tanto la fecha como iflag estan inicializados

Esta es la funcion como tal

Código Delphi [-]
function swe_calc_ut(tjd         : double;    {Julian day, Universal Time}
                     ipl         : Integer;   {planet number}
                     iflag       : Longint;   {flag bits}
                     var xx      : double;    {first of 6 doubles}
                     sErr        : PChar      {Error-String}
): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc_ut@24';

movorack 19-02-2020 21:06:46

Cita:

Empezado por compuin (Mensaje 535792)
Respeto antes que nada, las ironias creo estan de mas

Tienes razón, no faltaba mas que alguien vaya y se mofe de tu falta de conocimientos técnicos para exponer el problema, de los problemas de redacción, y mucho menos de la falta de claridad. O hasta de pronto de la falta de comprensión lectora, Porque ya leíste la guia de estilo cierto?

En fin, tienes razón.

Cita:

Empezado por ecfisa (Mensaje 535801)
Hola compuin.

Leí todos tus mensajes y no entiendo el problema. Sincenramente creo que es por que la información que nos das es escasa o inconéxa.

¡Vaya, vaya! Que ecfisa no te halla comprendido muestra lo mal explicado que está.

Cita:

Empezado por compuin (Mensaje 535803)
Hola escafandra

Efectivamente, tanto la fecha como iflag estan inicializados

Esta es la funcion como tal

Código Delphi [-]
function swe_calc_ut(tjd         : double;    {Julian day, Universal Time}
                     ipl         : Integer;   {planet number}
                     iflag       : Longint;   {flag bits}
                     var xx      : double;    {first of 6 doubles}
                     sErr        : PChar      {Error-String}
): Longint; stdcall; far; external 'swedll32.dll' name '_swe_calc_ut@24';

Y... me quedo sin saber aún cual es el problema, porque no funciona, como quieres que funcione, si van a sacar una segunda película de The Joker.


La franja horaria es GMT +2. Ahora son las 16:46:57.

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