FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
Nouvelle fonction: VARIABLE(v$) Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
Nouvelle fonction: VARIABLE(v$) Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Nouvelle fonction: VARIABLE(v$) Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Nouvelle fonction: VARIABLE(v$) Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Nouvelle fonction: VARIABLE(v$) Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Nouvelle fonction: VARIABLE(v$) Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Nouvelle fonction: VARIABLE(v$) Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Nouvelle fonction: VARIABLE(v$) Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Nouvelle fonction: VARIABLE(v$) Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Nouvelle fonction: VARIABLE(v$) Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Nouvelle fonction: VARIABLE(v$) Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le deal à ne pas rater :
Jeux, jouets et Lego : le deuxième à -50% (large sélection)
Voir le deal

 

 Nouvelle fonction: VARIABLE(v$)

Aller en bas 
4 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyJeu 2 Déc 2010 - 22:38

J'étais en train de regarder cette fonction pour chercher des applications, j'avais une idée (dans le cadre des bibliothèques de sous-programmes), mais je pense que ce n'est pas réalisable.

Je me disais que pour éviter les double déclarations (gros problème des sous-programmes indépendants), il aurait suffi de faire:
v$ = "a%": ' par exemple
IF VARIABLE(v$) = 0 THEN DIM ??? mais là je ne sais pas quoi mettre !
Oui, DIM a% dans ce cas.

Mais s'il y a une série de variables, par exemple contenue dans une chaîne, séparées par des virgules:
"f$,a$,tf,lh%,w%,h%,bpp%,opp%,ll%"
et qu'on veut faire ça dans une boucle, en les extrayant une à une, je ne sais pas faire, on peut savoir si la variable est déjà déclarée, mais on ne peut pas paramétrer le DIM pour la déclarer dans le cas contraire.

C'est d'ailleurs le même problème avec LABEL(lab$).

Dommage Sad

J'ai eu l'idée (géniale) d'écrire à l'initialisation, par programme, un fichier Include contenant les déclarations (DIM) à effectuer, en évitant d'en faire en double:
Code:
IF VARIABLE("f$")=0 THEN DIM f$
IF VARIABLE("a$")=0 THEN DIM a$
IF VARIABLE("tf")=0 THEN DIM tf
IF VARIABLE("lh%")=0 THEN DIM lh%
IF VARIABLE("w%")=0 THEN DIM w%
IF VARIABLE("h%")=0 THEN DIM h%
IF VARIABLE("bpp%")=0 THEN DIM bpp%
IF VARIABLE("opp%")=0 THEN DIM opp%
IF VARIABLE("ll%")=0 THEN DIM ll%
puis de lancer le #Include, mais ça ne marche pas comme ça, l'éditeur Panoramic cherche à charger le fichier Include avant de dérouler le code, alors que le fichier n'est pas encore créé...
Il faut que le fichier existe déjà avant le lancement du programme pour pouvoir le mettre en include dans le code, et il est inclus avant le début de l'exécution.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyVen 3 Déc 2010 - 5:37

@JL35:
Je trouve que variable( ) simplifie quand même l'écriture. Par exemple dans mon post sur "pb excel_write" j'avais écris un truc comme ça :

Code:
LABEL Hex2Dec : DIM Hex2Dec$
Hex2Dec$="CAFE": GOSUB Hex2Dec
PRINT Hex2Dec%
END

Hex2Dec:
  IF variable("Hex2Dec_i%")<>1
    DIM Hex2Dec_i%, Hex2Dec%
  END_IF
  Hex2Dec% = 0 : Hex2Dec$ = UPPER$(Hex2Dec$)
  FOR Hex2Dec_i% = 1 TO LEN(Hex2Dec$)
    Hex2Dec% = Hex2Dec%*16 + INSTR("0123456789ABCDEF", MID$(Hex2Dec$, Hex2Dec_i%, 1))-1
  NEXT Hex2Dec_i%
RETURN

Dans ce cas, au début du prog, tu ne déclares que les paramètres d'entrée de ta procédure et tu ne te préoccupe pas de la déclaration des variables "internes" (locales Wink ) de la procédure Hex2Dec...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyVen 3 Déc 2010 - 9:12

Tu peux même faire ceci:
Code:
LABEL Hex2Dec : DIM Hex2Dec$
if label("Hex2Dec")=0
  label Hex2Dec
  dim Hex2Dec%, Hex2Dec_i%
end_if
Hex2Dec$="CAFE": GOSUB Hex2Dec
PRINT Hex2Dec%
END

Hex2Dec:
  Hex2Dec% = 0 : Hex2Dec$ = UPPER$(Hex2Dec$)
  FOR Hex2Dec_i% = 1 TO LEN(Hex2Dec$)
    Hex2Dec% = Hex2Dec%*16 + INSTR("0123456789ABCDEF", MID$(Hex2Dec$, Hex2Dec_i%, 1))-1
  NEXT Hex2Dec_i%
RETURN

Ce qui permet de coller le code d'appel (lignes 1 à 7) partout où il faut appeler cette routine, en adaptant la ligne 6, et il n'y a plus de problème de définition, ni de variable, ni de label, quelque soit l'ordre dynamique dans lequel on parcourt le programme. Plus besoin de savoir quel appel sera le premier, et rien à déclarer en entête de programme. Idéal pour inclure des modules par #INCLUDE contenant des sous-programmes :
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyVen 3 Déc 2010 - 14:05

Je pensais à quelque chose de plus... universel, c'est à dire pouvoir utiliser n'importe quelle variable de manoeuvre (je ne parle pas des variables 'paramètres') dans n'importe quel sous-programme, par exemple des i%, j%, x, y, a$... que j'utilise abondamment, (et non pas des noms de variables particulières à chaque sous-programme), et que ça ne fasse pas conflit dans les déclarations.
Une structure du genre (avec ici 4 s/p inclus):

Code:

' ...
' ******** ici, autres labels, dims, objets, initialisations
' ...
LABEL Spinit, rspinit: GOSUB SpInit: ' à faire en dernier, avant le End
END
' ================ Sous-programme d'initialisation =======================
SpInit:
' Initialisation des déclarations des sous-programmes inclus
DIM ini%, dec$, kini%, va$, dect$, finc$: finc$ = "Z:\Incl.bas": ' emplacement du fichier à voir...
ini% = 0: dect$ = ""
LABEL BmpInfos, Jpg2Bmp, DimImage, Posxy
GOSUB BmpInfos: dect$ = dect$ + dec$
GOSUB Jpg2Bmp: dect$ = dect$ + "," + dec$
GOSUB DimImage: dect$ = dect$ + "," + dec$
GOSUB Posxy: dect$ = dect$ + "," + dec$
FILE_OPEN_WRITE 1, finc$
rspinit:
kini% = INSTR(dect$, ",")
IF kini% > 0
    va$ = TRIM$(LEFT$(dect$, kini%-1)): dect$ = MID$(dect$, kini%+1, LEN(dect$))
    FILE_WRITELN 1, "IF VARIABLE("+CHR$(34)+va$+CHR$(34)+")=0 THEN DIM " +va$
    GOTO rspinit
END_IF
va$ = TRIM$(dect$)
FILE_WRITELN 1, "IF VARIABLE("+CHR$(34)+va$+CHR$(34)+")=0 THEN DIM " +va$
FILE_CLOSE 1
ini% = 1
#INCLUDE "Z:\Incl.bas"
FILE_DELETE finc$
RETURN
' ============ sous-programmes inclus =====================
BmpInfos:
IF ini% = 0
    dec$ = "f$,a$,tf,lh%,w%,h%,bpp%,opp%,ll%": ' variables du sous-programme
    RETURN
END_IF
' corps du s/p BmpInfos
RETURN

Jpg2Bmp:
IF ini% = 0
    dec$ = "fi$,fo$": ' variables du sous-programme
    RETURN
END_IF
' corps du s/p Jpg2Bmp
RETURN

DimImage:
IF ini% = 0
    dec$ = "f$,fm$,a$,w%,h%"
    RETURN
END_IF
' corps du s/p DimImage
RETURN

Posxy:
IF ini% = 0
    dec$ = "pos, tf, x%, y%, ll%, opp%, pos, r, g, b": ' variables du sous-programme
    RETURN
END_IF
' corps du s/p Posxy
RETURN
-> le fichier Include contient les déclarations conditionnelles (If Variable...) de toutes les variables des sous-programmes.
Mais ça ne marche pas comme ça, du fait que le fichier Include n'est pas encore créé au moment du lancement.
Il faudrait créer préalablement le Include, qu'il figure déjà dans la bibliothèque avec les sous-programmes (un petit programme à lancer à part, une fois que les sous-programmes sont bien définis, ou à chaque modification).
Et pareil pour les Labels.
Revenir en haut Aller en bas
Georges

Georges


Nombre de messages : 290
Age : 55
Localisation : Martinique
Date d'inscription : 29/05/2009

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyVen 3 Déc 2010 - 14:23

salut à tous

tu pourrais tester l'existence de ton fichier avant de lancer include.
c-a-d lancer include au conditionnel

@+
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) EmptyVen 3 Déc 2010 - 15:02

Mais non, je ne peux rien tester du tout, puisque le fichier doit être présent AVANT toute exécution du programme.
C'est l'Editeur qui ne veut pas lancer le programme si le fichier n'existe pas.

Mais j'étudie autre chose...
Revenir en haut Aller en bas
Contenu sponsorisé





Nouvelle fonction: VARIABLE(v$) Empty
MessageSujet: Re: Nouvelle fonction: VARIABLE(v$)   Nouvelle fonction: VARIABLE(v$) Empty

Revenir en haut Aller en bas
 
Nouvelle fonction: VARIABLE(v$)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Nouvelle variable système: IS_PANORAMIC_COMPILED
» Nouvelle variable système NUMBER_CLOSE
» Valeur d'une variable
» variable?
» variable ne décrémente pas

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: