Passage de tableaux en paramètre ?

Résolu
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 - 29 juin 2007 à 18:04
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 - 1 juil. 2007 à 20:21
bonjour,

je bloque complètement sur un truc qui me semble devrait être tout simple.
J'ai une fonction :
Public Sub ComputeFootprint(ByVal RS As Double, ByVal satLat As Double, ByVal satLong As Double)
    Dim srad, cla, sla, clo, slo, sra, cra, A As Double
    Dim i As Integer
    Dim N As Integer
    Dim x, y, z As Double

    srad = ACS(RE / RS)         'rayon du cercle de visibilité du satellite
    cla = Cos(satLat)           'cosinus de la latitude
    sla = Sin(satLat)           'sinus de la latitude
    clo = Cos(satLong)          'cosinus de la longitude
    slo = Sin(satLong)          'sinus de la longitude
    sra = Sin(srad)             'sinus du rayon
    cra = Cos(srad)             'cosinus du rayon
   
    N = 10
   
    For i = 0 To N              'N points to the circle
        A = 2 * Pi * i / N      'Angle around the circle

        x = cra                 'Circle of points centred on Lat=0, Lon=0        y sra * Sin(A)        'assuming Earth's radius 1
        z = sra * Cos(A)        '[ However, use a table for SIN(.)  COS(.) ]

        x = x * cla - z * sla   'Rotate point "up" by latitude satLat
        y = y
        z = x * sla + z * cla

        x = x * clo - y * slo   'Rotate point "around" through longitude satLong
        y = x * slo + y * clo
        z = z

        LON(i) = FNatn(y, x)    'Convert point to Lat/Lon (or as required by map
        LAT(i) = ASN(z)         'projection and display system).
    Next i
End Sub

j'ai créé 2 variables tableaux global :
Dim LON(10) As Double
Dim LAT(10) As Double
Le tout dans un module.
Dans ma form j'essaie d'appeler la fonction en faisant :
Private Sub Combo1_click()
    Dim julian As String
    Dim threshdeg As Double
    Dim az As Double
    Dim el As Double
    Dim longit As Double
    Dim lat As Double
    Dim range As Double
    Dim rr As Double
    Dim alt As Double
    Dim phase As Double
    Dim isVisible As Boolean
    Dim southbound As Boolean
   
    Dim RS As Double
    Dim i As Integer
   
    Dim fVisibilite As New MapXLib.Feature
    Dim pt As Point
    Dim StylePoint As MapXLib.Style
   
    julian = sat.DateTimeToJT(dt)   'convertit la date actuelle en jour Julien
    threshdeg = 0.5  'radians
    isVisible = sat.isVisible(Combo1.Text, julian, threshdeg, southbound, az, el, longit, lat, range, rr, alt, phase) 'calcule la position actuelle du satellite
    longit = Arrondir(convertLongitude(RadToDeg(longit)))
    lat = Arrondir(RadToDeg(lat))
   
    RS = 824.15
    computefootprint(RS,lat,longit,LONGITUDES,LATITUDES)
    For i = 0 To 10
        fVisibilite.Attach Map1
        fVisibilite.Type = miFeatureTypeSymbol
        fVisibilite.Point.Set LONGITUDES(i), LATITUDES(i)
    Next i
   
    Map1.Layers("satellites").Refresh
End Sub

et quand je fais "exécution avec compilation complète", j'ai une erreur au niveau de la ligne rouge qui me dit "erreur de syntaxe"
Pourtant ça me semble correct

Merci pour l'aide

10 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
29 juin 2007 à 18:30
ComputeFootprint() est déclarée pour prendre 3 params et tu en passes 5.

ciao...
BruNews, MVP VC++
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
29 juin 2007 à 19:12
en plus c' est une Sub et donc lors de l' appel il faut 

> soit :  computefootprint RS,lat,longit,LONGITUDES,LATITUDES
> soit : Call  computefootprint(RS,lat,longit,LONGITUDES,LATITUDES)
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 23 août 2018 21
29 juin 2007 à 23:14
Et quand tu déclares des variables comme ceci
Dim srad, cla, sla, clo, slo, sra, cra, A As Double
seul A est considéré Double, les autres sont des Variant
Tu dois mettre As Double pour toutes les variables

Et si tes tableaux sont déclarés Public, il n'est donc pas nécessaire de les passer en paramètre...

MPi
3
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
30 juin 2007 à 12:42
Bonjour Chaibat05,

Tu ne ferais pas un soft de tracking de satellites ? quel modèle utilises-tu pour les calculs, le SGP4 ? à partir des datas en '2 lignes'.

Amicalement de Cheyenne.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 juin 2007 à 12:57
Salut Cheyenne,


Qu' est-ce-qui t' as mis dans l' idée que je "traque" les satelittes ?!
Désolé mais ça c' est pas mon truc et je n' ai nullement l' intention de le faire :-)
Moi les satelittes je me contente de les voir tourner ...
T' as du sûrement confondre.


C' est à kkhuet qu' il faudra poser la question...
Amicalement.
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
30 juin 2007 à 18:41
Bonjour Chaibat05,

Je te demande de bien vouloir m'excuser, je me suis effectivement trompé d'interlocuteur. J'ai regardé trop vite les réponses d'où la confusion...

Donc je repose la question, mais ce coup-ci  à  kkhuet :
Tu ne ferais pas un soft de tracking de satellites ? quel modèle utilises-tu pour les calculs, le SGP4 ? à partir des datas en '2 lignes'.

Bonne soirée et bon dimanche à Tous.

Cordialement de Cheyenne.
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
30 juin 2007 à 19:27
bonjour,

effectivement c'est un soft pour les satellites et j'utilise bien le
SGP4 et les fichiers qui contiennent les éphémérides ont 2 lignes, et
c'est dur dur !!

bonne soirée aussi
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
30 juin 2007 à 20:38
ReBonjour kkuet,

Oui, effectivement, c'est assez ardu. Il faut s'y tenir !!!

Si tu envisages également dans ton soft le tracé de la ligne grise, il faut faire attention aux changements lors des équinoxes car la 'grayline' s'inverse.
Puis si tu positionnes le soleil, bonjour les formules de rotation pour le faire figurer sur la planisphère.
Pour comparer les résultats de tes calculs, tu peux utiliser Orbitron qui est très fiable. Ce soft, gratuit, est entièrement paramètrable au niveau de l'interface.
Si tu ne le possède pas déjà, je te le recommande vivement.

Je suppose que c'est pour le plaisir que tu te lances dans ce soft car il y en a une pléiade de disponibles. (voir du côté radio-amateur, entre autres)

Bonne prog, @+

Cheyenne
0
kkhuet Messages postés 92 Date d'inscription lundi 16 mai 2005 Statut Membre Dernière intervention 3 juin 2009 1
1 juil. 2007 à 18:51
Salut,
ouh la la ça a l'air encore plus compliqué que ce que je pensais..en parlant de grayline, je suppose que tu parles de la ligne séparant jour et nuit ? Heureusement, je n'ai pas besoin d'afficher le soleil et la lune, juste la limite entre le jour et la nuit suffit, je pense...
Je connais Orbitron, ya aussi WXtrack qui est pas mal !
Et non je fais pas ça pour le plaisir, j'y suis obligée
Bon début de semaine à tous, et bonnes vacances aux veinards !!
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
1 juil. 2007 à 20:21
Bonsoir kkhuet,

Oui, c'est bien cela dont il s'agit, de la ligne ligne séparant le jour et la nuit.

L'avantage d'Orbitron c'est que l'on peut en plus du pilotage du rotor (commeWXtrack) disposer d'un driver pour le récepteur, très utile pour contrer l'effet Doppler.
A noter que WXTrack a été écrit en VB !

Bon courage pour le transcodage du SGP4 en Pascal vers le VB.

Bonne semaine.

Cheyenne
 
0