plusieur return procedure (et procedure dll)

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

comme deja maintes fois expliqué
je ne cherche pas une solution pour remplacer !! :?
mais bel et bien que Fred fasse quelque chose au For-next du purebasic
qui est une gentille blague par rapport aux autres basic !! :lol:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Je me case dans le débat sans avoir lu ce qui a été dit précédemment. Ca fait longtemps que je ne suis pas passé sur les forums PB et j'ai pas la force de lire tous les nouveaux posts...

Il n'est pas "possible" de faire ce qui est demandé parce qu'un fichier dll ne permet tout simplement pas de retourner plusieurs valeurs dans une fonction. Dans la mesure où ces fichiers répondent à une "convention d'appel des procédures" (stdcall ou CDecl) et commes ces bibliothèques sont prévues pour être partagées on doit s'aligner sur la norme.

Maintenant il n'est pas impossible de retourner plusieurs valeurs. Il suffirait de pouvoir affecter des structures.

Code : Tout sélectionner

;par exemple
a.point = b.point
Du coup, retourner plusieurs valeurs reviendrait à retourner une structure

Code : Tout sélectionner

;par exemple
Procedure.point test()
  ProcedureReturn a.point
EndProcedure
Il existe des langages compilés qui proposent de retourner plusieurs variables d'un type différent.

Code : Tout sélectionner

//par exemple
<int, float> ma_fonction() {
  return <5, 12.5f>;
}
Là encore un système de structure anonyme est utilisé. En tout cas dans les langages que je connais. L'idéal serait vraiment de pouvoir affecter des structures, et à terme redéfinir les opérateurs des types autres que les types de base.

Je pense qu'à partir de là on pourrait avoir ce genre de méchanisme ^_^

Dri
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Ouais, ou le truc tout bête finalement.

Code : Tout sélectionner

Structure PAF
    Papa.L
    Maman.L
    LaBonne.S
    EtMoi.F
EndStructure

Declare Poum(*Pif.PAF)

Pif.PAF
Poum(Pif)

Procedure Poum(*Pif.PAF)
    With *Pif
        \Papa + \LaBonne
        \EtMoi * #Pi
        Debug \Maman
    EndWith
EndProcedure
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

J'suis "xrix" j'ai un message d'erreur dans la macro, qui me dit :cry:
Répondre