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)
2 suggestions Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
2 suggestions Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
2 suggestions Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
2 suggestions Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
2 suggestions Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
2 suggestions Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
2 suggestions Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
2 suggestions Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
2 suggestions Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
2 suggestions Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
2 suggestions Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
2 suggestions Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
2 suggestions Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
2 suggestions Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
2 suggestions 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
-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache Runner
69.99 € 139.99 €
Voir le deal

 

 2 suggestions

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: 2 suggestions   2 suggestions EmptyVen 1 Mar 2013 - 9:54

J'ai deux suggestions à faire.

1. Indirection des variables
On a déjà certaines fonctions auxquelles on peut passer des noms sous forme de chaîne de caractères. Je pense à VARIABLE() et LABEL().

J'aimerais pouvoir faire quelque chose de similaire avec la commande DIM ! J'aimerais pouvoir utiliser une expression de chaîne de caractères comme nom d'une variable. Certes, cela semble impossible avec la commande DIM telle qu'elle est.

C'est pourquoi je propose l'utilisation "indirecte" des variables, tant à l'intérieur d'une expression qu'à gauche du signe "=". Pour cela, je propose le préfixe @. Je propose que ce caractère doit précéder un nom de variable existante de type chaîne de caractères, et cette variable doit contenir le nom d'une variable, éventuellement avec ses indices.
Exemples:
Code:

DIM s$

s$ = "test%"
DIM @s$ ==> DIM test%

s$ = "MonTableau(3,5)"
DIM @s$ ==> DIM Mon_Tableau(3,5)

s$ = "Totaux(4)"
charger_totaux(s$)
...
sub charger_totaux(v$)
  DIM @v$
...
  @v$(1) = 20.5
  @v$(2) = @v$(1) + 17
end_sub

Ceci permettrait plusieurs nouveautés:
- paramétrer la création de variables, en particulier en lien avec les procédures. On peut déjà le faire avec les indices d'un tableau en les passant comme expression numérique, mais actuellement, on ne peut le faire, ni avec le nom, ni avec le type de variable
- dans les procédures, pouvoir modifier les éléments d'un tableau dont le nom est passé en paramètre, ce qui est actuellement impossible
- dans une procédure, constituer de façon centralisée un tableau, dont les noms, dimensions et éléments dépendraient des paramètres passés

2. Affectation d'un tableau à un autre
J'aimerais pouvoir copier un tableau dans un autre, avec une seule commande. Bien sûr, à condition que les dimensions correspondent. Une duplication en quelque sorte. Cela pourrait se faire par une commande du type
DUPLICATE S,D
qui duplique le tableau S en tableau D
Cela pourrait donner quelque chose du genre;
Code:

dim tableau1(3,5), tableau2(3,5)
' ... ici, charger le tableau1
DUPLICATE tableau1,tableau2
ou alors ceci:
Code:

dim mon_tableau(20)
calculer_tableau("mon_tableau",20)
...
sub calculer_tableau(nom$,dimension%)
  dim_local tab_interne(dimension%)
  ' ... remplir le tableau tab_interne
  DUPLICATE tab_interne,@nom$ : ' ici, on retourne un tableau entier !
Ainsi, on peut retourner un tableau entier par une procédure, et même plusieurs !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pan59

pan59


Nombre de messages : 367
Age : 66
Localisation : Wattignies
Date d'inscription : 16/10/2011

2 suggestions Empty
MessageSujet: Autres suggestions.   2 suggestions EmptyVen 1 Mar 2013 - 10:20

Bonjour à tous.

Bonne idée, Klaus.

Ces fonctions pourraient être très utiles.

Pour ma part, je pense qu'il manque toujours les fonctions suivantes:


- instr (chaine$, sous_chaine$, position_depart%): recherche d'une sous-chaîne dans une chaîne, à partir d'une position initiale.

- lastInstr: même fonction, mais cette fois rechercher à partir de la fin de la chaîne.

- mid$ (chaine$, position_depart%, longueur%): extraction d'une sous-chaine d'une longueur déterminée.

- reverse (chaine$): fournit une chaîne inversée.

Ce serait bien d'inclure ces fonctions en natif dans Panoramic.


Dernière édition par pan59 le Ven 1 Mar 2013 - 12:39, édité 1 fois
Revenir en haut Aller en bas
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptyVen 1 Mar 2013 - 10:45

@Pan59:
Tes suggestions de fonctions de chaînes de caractères sont intéressantes. Mais celle de MID$ existe déjà, exactement avec les paramètres que tu proposes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pan59

pan59


Nombre de messages : 367
Age : 66
Localisation : Wattignies
Date d'inscription : 16/10/2011

2 suggestions Empty
MessageSujet: Autres suggestions.   2 suggestions EmptyVen 1 Mar 2013 - 12:29

Bonjour.

Oh, je viens de m'apercevoir que j'ai commis un bug avec la fonction MID$.

En fait, je voulais écrire:


MID$(chaine$,position_depart%)

Qui retournerait une sous-chaîne à partir d'une position de départ, et ce jusqu'à la fin de la chaîne, sans préciser sa longueur.
Revenir en haut Aller en bas
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptyVen 1 Mar 2013 - 13:01

Pour ça, je fais
sous_chaine$ = mid$(chaine$,position_depart%,len(chaine$))
ou alors
sous_chaine$ = mid$(chaine$,position_depart%,100000)

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

2 suggestions Empty
MessageSujet: re   2 suggestions EmptyVen 1 Mar 2013 - 14:32

@ Klaus,

J'ai un peu de mal à cerner ce que tu veux faire mais c'est pas grave.
Je suis toujours un peu long à la "comprenette" ... Laughing

Par contre, il existe Variable() et Label() qui nous permettent de savoir
si une variable ou un label sont déjà déclarés.
Peut être serait il bien que l'on est la même chose pour les procédures ( sub ) : Procedure()
ou tout autre appellation qui ferait la même chose ...

Peut être pourrait on aussi faire des choses du style : Variable ("a$","b%","c","t$(3)")
et autant pour les autres....

Revenir en haut Aller en bas
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptyVen 1 Mar 2013 - 17:07

@Ygeronimi:

Tu as bien vu qu'on peut tester l'existence d'une variable ou d'un label par des fonctions auxquelles on passe une chaîne de caractères qui contient le nom à vérifier. C'est le seul moment dans Panoramic où l'on peut utiliser une variable de type chaîne de caractères, ou même une expression de type chaîne de caractères, pour "interagir" avec une variable ou un label.

Je le dis volontairement de façon aussi vague, car cela a son importance. Car, après tout, pourquoi on peut faire cela uniquement dans ce cas de vérification ? Est-ce que cela pourrait avoir un sens de mettre le nom d'une variable dans une variable de type chaîne de caractères ?

Eh bien, la réponse est OUI ! Et même un OUI très appuyé ! Surtout par rapport aux procédures. Car ce concept est puissant et permet de faire des choses vraiment intéressantes, mais il souffre d'un handicap majeur: celui d'être très limité pour retourner des valeurs !

Je sais, on a débattu longuement de ce sujet dans ce forum. J'y ai contribué moi-même, avec ma solution au problème. Mais quelque soit la solution retenue, une évidence s'impose: cela tourne toujours autour de variables globales, prédéfinies pour certaines suggestions, ou créées dans la procédure elle-même comme dans KGF_SUB.bas. Et ceci est limitatif et contraignant.

Car le vrai enjeu, c'est de pouvoir agir un un tableau. Et là, le problème est encore plus radu, car aujourd'hui, on ne peut même pas passer un tableau en paramètre en entrée à une procédure, encore moins retourner un tableau ou modifier un tableau dans la procédure. Sauf à accéder un tableau global, déclaré à l'extérieur de la procédure et dont on impose le nom...

Et c'est exactement là où je veux en venir ! Je voudrais pouvoir créer plusieurs tableaux, globalement par la commande DIM. Puis, dans une procédure, lire et/ou modifier l'un ou l'autre de ces tableaux, en fonction des besoins.

Tu le diras: il suffit de passer un paramètre dont la valeur (1, 2, 3, ...) est utilisé dans un SELECT...CASE pour choisir le tableau dans la procédure. Mais quelle lourdeur ! Cela veut dire qu'il faut coder le même traitement autant de fois qu'il y a de tableaux, et choisir une section ou une autre en fonction d'un indicateur. Et il faut que les noms des tableaux soient connus et prévus.

Problème, en-dehors de la multiplication inutile du code: comment faire pour ajouter un nouveau tableau ? Il faut dupliquer le traitement dans la procédure en définissant un nouveau code de sélection. Alors, cela exclut totalement d'avoir une procédure indépendante, distribuable auprès d'autres Panoramiciens, ce qui était pourtant un objectif essentiel pour la conception des procédures !

Donc, voilà le sens de ma suggestion: on pourrait placer le nom du tableau à traiter dans une variable et passer cette variable en paramètre à la procédure. Celle-ci utilise le nom du paramètre interne de la procédure, précédé d'un "@", et Panoramic saurait alors que le nom de la variable ou du tableau à utiliser est dans la chaîne de caractères, exactement comme pour les fonctions variable() et label(). Juste un petit exemple pour plus de clarté:
Code:

dim matrice1(8,8), matrice2(8,8), autre_tableau(12,12)
dim s$

initialiser("matrice1",8) : ' initialiser la matrice 1
s$ = "autre_tableau"
initialiser(s$,12)          : ' initialiser autre_tableau

raz("autre_tableau",12,7)  : effacer la ligne 7 de autre_tableau

duplicate tableau1,tableau2 : ' créer une copie du yableau 1 dans tableau 2

end

sub initialiser(nom$,n%)
  dim_local i%, j%
  for i%=0 to n%
    for j%=0 to n%
      @nom$(i%,j%) = i% + j%/100
    next j%
  next i%
end_sub

sub raz(nom$,n%,ind%)
  dim_local i%
  for i%=1 to n%
    @nom$(ind%,i%) = 0
  next i%
end_sub

On travaillerait ainsi facilement avec des matrices (pour ceux qui aiment les maths), on pourrait retourner facilement plusieurs valeurs, même en chaînes de caractères, à partir d'une procédure:
Code:

dim chaine1$, chaine2$,resultat%
ma_procédure("chaine1$","chaine2$","resultat%")
end

sub ma_procedure(p1$,p2$,p3$)
  @p1$ = date$
  @p2$ = time$
  @p3$ = 17*17
end_sub

Tu vois le principe ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

2 suggestions Empty
MessageSujet: re   2 suggestions EmptyVen 1 Mar 2013 - 18:19

Je vois mieux ce que tu veux faire et j'avoue, même si je ne suis pas sûr de m'en servir beaucoup personnellement ,
que cela peut être une grande avancée pour toi qui travaille avec les dlls.

Ceci dit, je maintiens bien que hors-sujet la commande Procedure("nom de la sub") pour le retour d'une sub existante...ou pas.
Revenir en haut Aller en bas
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptyVen 1 Mar 2013 - 18:58

Certes. Ce serait logique - pour être cohérent avec fonction() et label().
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptySam 2 Mar 2013 - 23:06

@Jack:

Tu vois, une des applications de mon idée des "variables indirectes" serait directement utile pour ma dernière contribution au niveau de la gestion des fichiers binaires. J'ai créé un système de lecture/écriture d'enregistrements e longueur fixe dans un fichier binaire, et ces enregistrements sont en fait une collection de variables Panoramic. Et c'est défini par des procédures créant une chaîne de caractères contenant la description de l'enregistrement. Variable créée systématiquement par le nom record$. Que ce serait élégant de pouvoir passer un nom en chaîne de caractères à la procédure de création, qui créerait alors la variable de ce nom pour la définition de l'enregistrement ! Et ainsi pouvoir faire facilement la gestion de plusieurs fichiers binaires, chacun avec son enregistrement ! Voici le
lien...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2381
Date d'inscription : 28/05/2007

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptySam 9 Mar 2013 - 8:20

J'ai noté toutes ces propositions interessantes.
Le seul obstacle, c'est le temps qui me manque ...
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions EmptySam 9 Mar 2013 - 8:58

Il n'y a aucune urgence, Jack, ni aucune obligation, bien sûr. Il est vrai que cela permettrait de faire des choses intéressantes. Et si jamais tu choisis de faire quelque chose de ce genre, ce serait super. Dans l'état actuel, il y a des solutions pour pallier à ce problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





2 suggestions Empty
MessageSujet: Re: 2 suggestions   2 suggestions Empty

Revenir en haut Aller en bas
 
2 suggestions
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Suggestions d'améliorations diverses
» Suggestions: Scene2d et sprites
» KGF.dll - demandes ou suggestions de modifications ou ajouts

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: