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
» Logiciel de planétarium.
Nouvelle fonction: VARIABLE(v$) Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Nouvelle fonction: VARIABLE(v$) Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Nouvelle fonction: VARIABLE(v$) Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Nouvelle fonction: VARIABLE(v$) Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Nouvelle fonction: VARIABLE(v$) Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Nouvelle fonction: VARIABLE(v$) Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Nouvelle fonction: VARIABLE(v$) Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Nouvelle fonction: VARIABLE(v$) Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Nouvelle fonction: VARIABLE(v$) Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Nouvelle fonction: VARIABLE(v$) Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Nouvelle fonction: VARIABLE(v$) Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Nouvelle fonction: VARIABLE(v$) Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Nouvelle fonction: VARIABLE(v$) Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 Nouvelle fonction: VARIABLE(v$)

Aller en bas 
4 participants
AuteurMessage
JL35




Nombre de messages : 7112
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 : 56
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 : 12331
Age : 75
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 : 7112
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 : 7112
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
-
» Erreur: Variable Already Used...
» renommer une variable?
» Couleur d'une variable qui n'est pas un mot-clé
» 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: