Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appel d'une procédure à entête, problème ???

3 réponses
Avatar
LE TROLL
Bonjour,

J'ai toujours un petit problème d'appel de
procédure à entête (de Patrice), je fais:

Presub TJ, JJ0, DN, A, J ' (gosub 6500)

REPONSE = Type d'argument byref incompatible

D'ailleurs, je ne comprend pas pourquoi on ne
peut pas écrire:

Call Presud ???

Avant c'était pas mieux, lol

Presub (TJ, JJ0, DN, A, J)

On comprendra pourquoi je n'aime pas tout ce qui
n'est pas procédure sans entête...

Une procédure sans entête avec des variables
globales, c'est si simple, c'est si bon...
Et encore, là j'ai de la chance, ça aurait pu être
une fonction en forme de variable:
Function a(b as byte, ByVal c, ByRef d)e as
boolean

Pourquoi aller se torturer avec des entêtes ?
Même ceux qui ont l'habitude d'en écrire ont des
problèmes pour les appeler, c'est une preuve ça
:o))))

--le code--

Sub Presub(TJ As Double, JJ0 As Double, DN As
Double, A As Long, J As Double) ' 6500
Dim K As Long, DJ As Double, F As Long, J0 As
Long
Dim data As String, donnees() As String, I As
Long, XK As Long, MDF As String
DJ = TJ - JJ0
If TJ < 2299226.5 Then DJ = DJ - DN
If (A Mod 4 = 0) Then F = 1
Else
If A = 1582 Then DJ = DJ + 10
If (A Mod 400 = 0) Or ((A Mod 4) = 0 And (A
Mod 100) <> 0) Then F = 1 Else F = 0
End If
If DJ > 58 Then DJ = DJ - F
donnees = Split(data, ", ")
I = 0
Do
XK = donnees(I)
I = I + 1
md = donnees(I)
I = I + 1
If (XK = 1000) Then
If DJ > 30 Then
XK = 30
md = "FEVRIER"
Else
XK = -1
md = "JANVIER"
End If
Exit Do
End If
If (Fix(DJ - 0.5) >= XK) Then Exit Do
Loop
J = DJ - XK
If (DJ > 333) And (J >= 31.5) Then
A = A + 1
J = J - 31
md = "JANVIER"
End If
J0 = Fix(J)
HH = (J - J0) * 24
H = Fix(HH)
MM = (HH - H) * 60
MN = Fix(MM)
s = Fix(MM - MN) * 60
H = H + 12
If H >= 24 Then
H = H - 24
J0 = J0 + 1
End If
End Sub


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------

3 réponses

Avatar
Patrice Henrio
LE TROLL a écrit :
Bonjour,

J'ai toujours un petit problème d'appel de
procédure à entête (de Patrice), je fais:

Presub TJ, JJ0, DN, A, J ' (gosub 6500)

REPONSE = Type d'argument byref incompatible

D'ailleurs, je ne comprend pas pourquoi on ne
peut pas écrire:

Call Presud ???

Avant c'était pas mieux, lol

Presub (TJ, JJ0, DN, A, J)

On comprendra pourquoi je n'aime pas tout ce qui
n'est pas procédure sans entête...

Une procédure sans entête avec des variables
globales, c'est si simple, c'est si bon...
Et encore, là j'ai de la chance, ça aurait pu être
une fonction en forme de variable:
Function a(b as byte, ByVal c, ByRef d)e as
boolean

Pourquoi aller se torturer avec des entêtes ?
Même ceux qui ont l'habitude d'en écrire ont des
problèmes pour les appeler, c'est une preuve ça
:o))))

--le code--

Sub Presub(TJ As Double, JJ0 As Double, DN As
Double, A As Long, J As Double) ' 6500
Dim K As Long, DJ As Double, F As Long, J0 As
Long
Dim data As String, donnees() As String, I As
Long, XK As Long, MDF As String
DJ = TJ - JJ0
If TJ < 2299226.5 Then DJ = DJ - DN
If (A Mod 4 = 0) Then F = 1
Else
If A = 1582 Then DJ = DJ + 10
If (A Mod 400 = 0) Or ((A Mod 4) = 0 And (A
Mod 100) <> 0) Then F = 1 Else F = 0
End If
If DJ > 58 Then DJ = DJ - F
donnees = Split(data, ", ")
I = 0
Do
XK = donnees(I)
I = I + 1
md = donnees(I)
I = I + 1
If (XK = 1000) Then
If DJ > 30 Then
XK = 30
md = "FEVRIER"
Else
XK = -1
md = "JANVIER"
End If
Exit Do
End If
If (Fix(DJ - 0.5) >= XK) Then Exit Do
Loop
J = DJ - XK
If (DJ > 333) And (J >= 31.5) Then
A = A + 1
J = J - 31
md = "JANVIER"
End If
J0 = Fix(J)
HH = (J - J0) * 24
H = Fix(HH)
MM = (HH - H) * 60
MN = Fix(MM)
s = Fix(MM - MN) * 60
H = H + 12
If H >= 24 Then
H = H - 24
J0 = J0 + 1
End If
End Sub




cela correspond à la commande traduire des lignes de qbasic en vb
La nouvelle commande : repartir des formules mathématiques est bien plus
simple et plus lisible.
Je te promets qu'on arrivera petit à petit à trouver les dates des
saisons à partir des documents que tu m'as fourni.

J'ai déjà regardé ce n'est pas insurmontable

Quie penses-tu déjà des conversions JourJulien et JourGregorien ?

Je suis en train de construire la conversion des Jours Juliens négatifs
qui n'est pas prévu dans le livre.
Avatar
LE TROLL
J'en pense rien, lol, je n'arrive pas à charger,
stp, faut me le ziper...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Patrice Henrio" a
écrit dans le message de news:
%
| LE TROLL a écrit :
| > Bonjour,
| >
| > J'ai toujours un petit problème d'appel de
| > procédure à entête (de Patrice), je fais:
| >
| > Presub TJ, JJ0, DN, A, J ' (gosub 6500)
| >
| > REPONSE = Type d'argument byref
incompatible
| >
| > D'ailleurs, je ne comprend pas pourquoi on
ne
| > peut pas écrire:
| >
| > Call Presud ???
| >
| > Avant c'était pas mieux, lol
| >
| > Presub (TJ, JJ0, DN, A, J)
| >
| > On comprendra pourquoi je n'aime pas tout ce
qui
| > n'est pas procédure sans entête...
| >
| > Une procédure sans entête avec des variables
| > globales, c'est si simple, c'est si bon...
| > Et encore, là j'ai de la chance, ça aurait pu
être
| > une fonction en forme de variable:
| > Function a(b as byte, ByVal c, ByRef d)e as
| > boolean
| >
| > Pourquoi aller se torturer avec des entêtes ?
| > Même ceux qui ont l'habitude d'en écrire ont
des
| > problèmes pour les appeler, c'est une preuve
ça
| > :o))))
| >
| > --le code--
| >
| > Sub Presub(TJ As Double, JJ0 As Double, DN As
| > Double, A As Long, J As Double) ' 6500
| > Dim K As Long, DJ As Double, F As Long, J0
As
| > Long
| > Dim data As String, donnees() As String, I
As
| > Long, XK As Long, MDF As String
| > DJ = TJ - JJ0
| > If TJ < 2299226.5 Then DJ = DJ - DN
| > If (A Mod 4 = 0) Then F = 1
| > Else
| > If A = 1582 Then DJ = DJ + 10
| > If (A Mod 400 = 0) Or ((A Mod 4) = 0 And
(A
| > Mod 100) <> 0) Then F = 1 Else F = 0
| > End If
| > If DJ > 58 Then DJ = DJ - F
| > donnees = Split(data, ", ")
| > I = 0
| > Do
| > XK = donnees(I)
| > I = I + 1
| > md = donnees(I)
| > I = I + 1
| > If (XK = 1000) Then
| > If DJ > 30 Then
| > XK = 30
| > md = "FEVRIER"
| > Else
| > XK = -1
| > md = "JANVIER"
| > End If
| > Exit Do
| > End If
| > If (Fix(DJ - 0.5) >= XK) Then Exit Do
| > Loop
| > J = DJ - XK
| > If (DJ > 333) And (J >= 31.5) Then
| > A = A + 1
| > J = J - 31
| > md = "JANVIER"
| > End If
| > J0 = Fix(J)
| > HH = (J - J0) * 24
| > H = Fix(HH)
| > MM = (HH - H) * 60
| > MN = Fix(MM)
| > s = Fix(MM - MN) * 60
| > H = H + 12
| > If H >= 24 Then
| > H = H - 24
| > J0 = J0 + 1
| > End If
| > End Sub
| >
| >
| cela correspond à la commande traduire des
lignes de qbasic en vb
| La nouvelle commande : repartir des formules
mathématiques est bien plus
| simple et plus lisible.
| Je te promets qu'on arrivera petit à petit à
trouver les dates des
| saisons à partir des documents que tu m'as
fourni.
|
| J'ai déjà regardé ce n'est pas insurmontable
|
| Quie penses-tu déjà des conversions JourJulien
et JourGregorien ?
|
| Je suis en train de construire la conversion des
Jours Juliens négatifs
| qui n'est pas prévu dans le livre.
Avatar
Modeste
Bonsour® Patrice Henrio avec ferveur ;o))) vous nous disiez :

Je te promets qu'on arrivera petit à petit à trouver les dates des
saisons ...........



voir également le Javascript dans le source de cette page
http://www.imcce.fr/page.php?nav=fr/ephemerides/astronomie/saisons/index.php
;o))

--
--
@+
;o)))