Variables dynamiques et process fils...
Variables dynamiques et process fils...
Bonjour,
Est-ce que les variables "dynamique" existent en Purebasic ?
Je m'explique, en PHP nous pouvons faire :
$var1 = "var2" (stockage de la chaine "var2" dans la variable var1)
$var2 = "Voici un texte" (stockage de la chaine "Voici un texte" dans la variable var2)
echo $var1 (Affiche le contenu de var1, en l'occurence le nom de la variable "var2")
echo $$var1 (Affiche le contenu de la variable var2 "Voici un texte")
Même exemple en shell unix :
$var1 = "var2" (stockage de la chaine "var2" dans la variable var1)
$var2 = "Voici un texte" (stockage de la chaine "Voici un texte" dans la variable var2)
echo $var1 (Affiche le contenu de var1, en l'occurence le nom de la variable "var2")
eval echo \$$var1 (Affiche le contenu de la variable var2 "Voici un texte")
Cordialement,
Laurent
Est-ce que les variables "dynamique" existent en Purebasic ?
Je m'explique, en PHP nous pouvons faire :
$var1 = "var2" (stockage de la chaine "var2" dans la variable var1)
$var2 = "Voici un texte" (stockage de la chaine "Voici un texte" dans la variable var2)
echo $var1 (Affiche le contenu de var1, en l'occurence le nom de la variable "var2")
echo $$var1 (Affiche le contenu de la variable var2 "Voici un texte")
Même exemple en shell unix :
$var1 = "var2" (stockage de la chaine "var2" dans la variable var1)
$var2 = "Voici un texte" (stockage de la chaine "Voici un texte" dans la variable var2)
echo $var1 (Affiche le contenu de var1, en l'occurence le nom de la variable "var2")
eval echo \$$var1 (Affiche le contenu de la variable var2 "Voici un texte")
Cordialement,
Laurent
Dernière modification par pastor le mar. 15/mai/2007 15:18, modifié 1 fois.
Ce serai possible, s'il y avait une phase de Preprocessing ! avant compilation (par passage par un Optcode comme en GFA ):DDr. Dri a écrit :Le problème c'est que PHP est un langage interprêté, donc les variables sont toujours désignées par leur nom. Dans un programme compilé on a plus que des adresses...
Dri
non car çà serait statique, si tu change la valeur de $var çà modifiera toujours $var2 (et pas l'autre).Dobro a écrit :Ce serai possible, s'il y avait une phase de Preprocessing ! avant compilation (par passage par un Optcode comme en GFA ):DDr. Dri a écrit :Le problème c'est que PHP est un langage interprêté, donc les variables sont toujours désignées par leur nom. Dans un programme compilé on a plus que des adresses...
Dri
Il faudrait une fonction qui garde en mémoire l'adresse de la variable dans un truc style hash-table.
ha oui!minirop a écrit :non car çà serait statique, si tu change la valeur de $var çà modifiera toujours $var2 (et pas l'autre).Dobro a écrit :Ce serai possible, s'il y avait une phase de Preprocessing ! avant compilation (par passage par un Optcode comme en GFA ):DDr. Dri a écrit :Le problème c'est que PHP est un langage interprêté, donc les variables sont toujours désignées par leur nom. Dans un programme compilé on a plus que des adresses...
Dri
Il faudrait une fonction qui garde en mémoire l'adresse de la variable dans un truc style hash-table.

Merci bien pour vos réponses, c'est dommage que ca ne puisse pas le faire, car c'est vraiment pratique et très puissant.
Ca permet au programme de créer, modifier et supprimer lui-même des variables selon ses besoins.
Dans le même ordre d'idée, est-ce que les fonctions eval de php ou du shell Unix existent sous Purebasic ?
Voici un bout de doc eval en PHP :
L'exemple ci-dessus va afficher :
Ceci est une $string avec mon $name dedans.
Ceci est une tasse avec mon café dedans.
Si ca n'existe pas, ce que je redoute, ca serait vraiment dommage, dans ce cas de figure, peut-on lancer un sous-shell ou un thread enfant (bref un process fils) en Purebasic ? Ce qui reviendrait au même...
Laurent
Ca permet au programme de créer, modifier et supprimer lui-même des variables selon ses besoins.
Dans le même ordre d'idée, est-ce que les fonctions eval de php ou du shell Unix existent sous Purebasic ?
Voici un bout de doc eval en PHP :
Code : Tout sélectionner
eval() évalue la chaîne code_str comme un script PHP. Parmi les utilisations possibles, cette fonction permet de stocker du code dans une base de données, pour utilisation ultérieure.
<?php
$string = 'tasse';
$name = 'café';
$str = 'Ceci est une $string avec mon $name dedans.<br />';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
?>
Ceci est une $string avec mon $name dedans.
Ceci est une tasse avec mon café dedans.
Si ca n'existe pas, ce que je redoute, ca serait vraiment dommage, dans ce cas de figure, peut-on lancer un sous-shell ou un thread enfant (bref un process fils) en Purebasic ? Ce qui reviendrait au même...
Laurent
Code : Tout sélectionner
$string = 'tasse';
$name = 'café';
$str = 'Ceci est une $string avec mon $name dedans.<br />';
echo $str;
eval( "\$str = \"$str\";" );
echo $str;
Code : Tout sélectionner
string.s = "tasse"
name.s = "café"
strs.s = "Ceci est une "+string+" avec mon "+name+" dedans."
debug strs
ou des datas...
je comprends pas où est le problème....
pat
Patrick,
En faite, mon exemple simplifié à l'extrême était fait pour expliciter mon propos. Il montre une double évaluation de la variable, qui peut même être triple ou plus...
Ton exemple est bon, pour répondre à ce besoin très simple, mais il ne fait qu'une simple évaluation.
De manière plus puissante la fonction eval permet par exemple de stocker une portion de code dans une variable puis de l'éxécuter dynamiquement.
Le code peut aussi être stocké dans une base de données, il peut ensuite être lu, adapté et exécuté ensuite selon le contexte.
Ca nous donne un programme auto-adaptatif...
Il faudrait pour cela, que le programme que l'on a écrit puisse faire une compilation "à la volée" et une exécution dans un processus fils.
Et finalement, ca rendrait Purebasic interprétable (ou scriptable) si on lui fait lire et exécuter un fichier txt.
Je verrais bien Purebasic, qui est finalement (je m'en rend compte à l'usage) un language très puissant et évolué, capable de faire ce genre de chose. Ca démultiplierait par ce faite ses possibilités.
Laurent
En faite, mon exemple simplifié à l'extrême était fait pour expliciter mon propos. Il montre une double évaluation de la variable, qui peut même être triple ou plus...
Ton exemple est bon, pour répondre à ce besoin très simple, mais il ne fait qu'une simple évaluation.
De manière plus puissante la fonction eval permet par exemple de stocker une portion de code dans une variable puis de l'éxécuter dynamiquement.
Le code peut aussi être stocké dans une base de données, il peut ensuite être lu, adapté et exécuté ensuite selon le contexte.
Ca nous donne un programme auto-adaptatif...
Il faudrait pour cela, que le programme que l'on a écrit puisse faire une compilation "à la volée" et une exécution dans un processus fils.
Et finalement, ca rendrait Purebasic interprétable (ou scriptable) si on lui fait lire et exécuter un fichier txt.
Je verrais bien Purebasic, qui est finalement (je m'en rend compte à l'usage) un language très puissant et évolué, capable de faire ce genre de chose. Ca démultiplierait par ce faite ses possibilités.
Laurent
ce que tu montre c'est que PHP est un language "surcouche" (des base de données et des protocoles internet)pastor a écrit :Patrick,
En faite, mon exemple simplifié à l'extrême était fait pour expliciter mon propos. Il montre une double évaluation de la variable, qui peut même être triple ou plus...
Ton exemple est bon, pour répondre à ce besoin très simple, mais il ne fait qu'une simple évaluation.
De manière plus puissante la fonction eval permet par exemple de stocker une portion de code dans une variable puis de l'exécuter dynamiquement.
Le code peut aussi être stocké dans une base de données, il peut ensuite être lu, adapté et exécuté ensuite selon le contexte.
Ca nous donne un programme auto-adaptatif...
Il faudrait pour cela, que le programme que l'on a écrit puisse faire une compilation "à la volée" et une exécution dans un processus fils.
Et finalement, ca rendrait Purebasic interprétable (ou scriptable) si on lui fait lire et exécuter un fichier txt.
Je verrais bien Purebasic, qui est finalement (je m'en rend compte à l'usage) un language très puissant et évolué, capable de faire ce genre de chose. Ca démultiplierait par ce faite ses possibilités.
Laurent
en purebasic on utilise pour faire ce que tu dit des procedures et autre sous-programme a l'aide de conditions (if,Case ect..)
le but n'étant pas le même

je pense que tout ce qui est fait en PHP pourrait (en se cassant les méninges) être fait en purebasic
alors que l'inverse n'est pas vrais !

d'un autre coté le PHP est fait pour l'internet, alors que le purebasic, lui est fait pour des applications autonomes , bref, la divergence est la surtout
