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
» Une calculatrice en une ligne de programme
Problème avec DIM et ADR Emptypar jean_debord Aujourd'hui à 8:01

» Gestion d'un système client-serveur.
Problème avec DIM et ADR Emptypar Pedro Hier à 19:31

» Les maths du crocodile
Problème avec DIM et ADR Emptypar jean_debord Hier à 10:37

» Naissance de Crocodile Basic
Problème avec DIM et ADR Emptypar jean_debord Hier à 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème avec DIM et ADR Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Problème avec DIM et ADR Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Problème avec DIM et ADR Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Problème avec DIM et ADR Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Problème avec DIM et ADR Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Problème avec DIM et ADR Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Problème avec DIM et ADR Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Problème avec DIM et ADR Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Problème avec DIM et ADR Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Problème avec DIM et ADR Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

» Bataille-navale
Problème avec DIM et ADR Emptypar jjn4 Mer 3 Avr 2024 - 14:08

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 du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

 

 Problème avec DIM et ADR

Aller en bas 
+4
659_minifly
Jean Claude
JL35
Nardo26
8 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 16:30

Je suis tombé par hasard sur un bug vraiment surprenant :
Suivant l'ordre dans laquel on déclare les variables,
le résultat du programme ci-dessous n'est pas identique...
scratch

Code:

dim txt$,pAdr%
' dim pAdr%,txt$
txt$="AbCd"

pAdr%=adr(txt$)

print "pAdr%    = "; pAdr%
print "adr(txt$) = ";adr(txt$)

Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 16:57

Les résultats de 2 dernières lignes sont censés être différents pour toi ? parce que chez moi c'est pareil, quel que soit l'ordre...
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 17:06

Ben normalement je dois avoir le meme résultat

là, le programme tel quel, j'obtiens :
pAdr% = 148146144
adr%(txt$)=148146144

jusque là tout est normal.
maintenant si je met la 1ere ligne en commentaire : rem dim txt$,pAdr%
et que j'active la 2eme : dim pAdr%,txt$
j'obtiens :

pAdr%=148146208
adr(txt$) = 148146216 <-- ce qui n'est pas la même chose tu en conviendra !!! bizarre... vous avez dis bizarre? comme c'est bizarre !


Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 17:43

J'en conviens volontiers et j'avais bien compris comme ça, et c'est d'autant plus bizarre (mon cher cousin) que si moi j'inverse les deux lignes (enfin, le commentaire) le résultat est aussi bon, les deux valeurs sont identiques...
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 18:35

Je viens d'essayer sur un autre PC, XP SP3 :
Le problème n'apparait pas... que ce soit en version 19 ou la derniere 20i2.

De même que l'exemple qu'a donné D.J Peters au sujet du pointeur de chaine de caractère, fonctionne très bien sous SP3 mais pas sous SP2...
Au départ, je pensai que cela venait de Kernel32.dll du coup je me suis crée une petite dll qui fait l'équivalent du memmove et cela plante également....
Bizarre...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 20:36

Si Panoramic (ou certaines fonctions, commandes,..) fonctionne différement suivant les systèmes d'exploitations, il y a de quoi être inquiet.
A+
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 20:52

j'ai le meme probleme j'ai windows 7
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 20:57

Mais , il faudrait peut-être que je vous donne mes résultaits sur Windows XP SP2 et avec un paquet de mise à jour (vu que je les laisse en télécharment automatique).

pour affiner le test je n'ai pas utilisé la ligne en commentaite, j'ai inversé l'ordre des variables.
Code:

 dim pAdr%,txt$

txt$="AbCd"

pAdr%=adr(txt$)

print "pAdr%    = "; pAdr%
print "adr(txt$) = ";adr(txt$)

Et là, c'est la mauvaise surprise, il y a un changement de valeur des variables.

Pour creuser j'ajoute un print str$(...),
Code:
 dim txt$,pAdr%

txt$="AbCd"

pAdr%=adr(txt$)


print "pAdr%    = ";pAdr%
print "adr(txt$) = ";adr(txt$)
print str$(pAdr%)
IDEM

???????????? confused

A+
Revenir en haut Aller en bas
JL35




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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyJeu 5 Aoû 2010 - 21:31

Eh bien, ça c'est ennuyeux, sous Vista (enfin, chez moi) aucun problème, en tournant dans tous les sens...
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 8:01

Bonjour,
Pour compliquer un peu :
J'ai rajouté une variable 'toto' volontairement je n'ai pas mis de % pour voir ce que cela faisait...

Dans l'exemple ci-dessous, cela ne fonctionne pas chez moi.
Mais si je déclare toto en 1ère variable (juste après le dim) tout rentre dans l'ordre et toutes les variables me renvoient la même valeur...

Code:

dim txt$,pAdr%,toto

txt$="AbCd"

pAdr%=adr(txt$)
toto=pAdr%

print "pAdr%    = ";pAdr%
print "toto:";toto
print "adr(txt$) = ";adr(txt$)
print str$(pAdr%)

Et l'écart constaté est toujours le même : 8 octets -> la taille du 'string-descriptor'...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 12:10

Chez moi çà donne à chaque run 4 résultats indentiques (ce qui est normal). Par contre si je déplace une variable dans la ligne DIM le résultat change.
Finalement, puisqu'il s'agit d'adresse, c'est peut-etre normal que l'adresse change si on change la variable txt$ de place.
Je ne suis pas assez "ferru" sur ce sujet pour affirmer quoique ce soit.....

A+
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 12:27

oui c'est normal que l'adresse change à chaque run...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 13:45

Non l'adresse (le résultat) ne change pas à chaque run, çà change que si je change l'ordre des variables dans la ligne DIM...

En fait, c'est quoi le problème ?
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 14:06

Le problème est simple :

sur mon PC lorsque j'exécute ce programme :
Code:

dim txt$,pAdr%

txt$="Coucou"
pAdr%= adr(txt$)

print "pAdr = ";pAdr%
print "adr(txt$) = ";adr(txt$)
Le contenu de la variable pAdr% n'est pas égale à adr(txt$)

sauf si je change la 1ère ligne et que j'écris :
dim pAdr%,txt$

Problème avec DIM et ADR Dim_adr.th


Dernière édition par Nardo26 le Ven 6 Aoû 2010 - 14:27, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
jjn4

jjn4


Nombre de messages : 2689
Date d'inscription : 13/09/2009

Problème avec DIM et ADR Empty
MessageSujet: +++   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 14:20

Cela ne me le fait pas :

Si je fais :
Code:
dim txt$,pAdr%
' dim pAdr%,txt$

txt$="Coucou"
pAdr%= adr(txt$)

print "pAdr = ";pAdr%
print "adr(txt$) = ";adr(txt$)

Cela donne :
Code:
pAdr = 14845920
adr(txt$) = 14845920

Et si je fais :
Code:
' dim txt$,pAdr%
dim pAdr%,txt$

txt$="Coucou"
pAdr%= adr(txt$)

print "pAdr = ";pAdr%
print "adr(txt$) = ";adr(txt$)

Cela donne :
Code:
pAdr = 14845992
adr(txt$) = 14845992

Les chiffres sont à chaque fois identiques,
même s'ils diffèrent d'un cas à l'autre, ce qui est normal.
scratch
PS: Eh, arrête de faire la fête !
lol!
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyVen 6 Aoû 2010 - 14:51

Je savais qu'elle plairait cette photo... Wink
Le PC n'a pas bru... heu...bu
et pourtant il veut pas faire ce que je lui demande !
Si pour jean-claude, l'adresse ne change pas entre chaque run cela voudrai dire que Pano alloue de la mémoire pour les variables et ne les libère pas forcement à la fin... où alors vraiment coup de pot !
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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyDim 8 Aoû 2010 - 19:44

NArdo26, tu as soulevé un lièvre de taille ! Effectivement, les valeurs changent en fonction de l'ordre de déclaration des variables.

Bon, que ce change, c'est normal, mais pour une version donnée du code, les deux lignes résultat affichées DOIVENT être identiques, sinon, il y a de quoi désespérer pour le passage de paramètres au DLL...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 8:57

Bonjour Klaus !

Oui en effet, pour l'utilisation des DLLs cela risque d'être dur...
Mais bizarrement je n'ai pas rencontré de pb sous XP SP3...
Sous Vista le pb existe... et sous Win7 pas encore essayé...
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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 9:15

Si, si, j'ai XP SP3 et je rencontre le même problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 9:40

... et ce n'est pas lié non plus à la version de Panoramic...
Ca va être mariole l'utilisation des DLLs.
Tout ça grace à D.J Peters lorsque j'ai voulu essayer son petit programme très instructif...
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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 10:05

Et le plus étonnant, c'est que dans la pratique, je ne rencontre pas de problème de passage de paramètres avec adr - toutes les routines sont testées avec des programmes Panoramic ayant pas mal de variables, et tout marche bien ! Il doit vraiment s'agir d'un cas limite.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 10:19

Pourtant elles n'ont rien d'exceptionelle mes 4 lignes de codes...
Je pense que c'est lié à la 1ere variable déclarée dans le prog.
Dim pAdr%
Dim txt$ <- là c'est ok

dans l'exemple ci-dessus, cela à l'air de marcher mais à mon avis le résultat de Adr(pAdr%) ne doit pas être bon...

Le bug doit concerner la 1ere variable déclarée dans le prog. Ce qui fait que tu avais très peu de chance de tomber sur ce pb...

Tiens ca me donne une idée :
faire le test sur la question de D.J Peters concernant le adr(tab%(0))
non ca marche pas non plus...
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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 10:42

De toutes façons, adr(tab%(0)) n'est pas utilisable en Panoramic. Les paramètres aux DLL's sont passées par valeur, et non par référence. Il en est de même pour la fonction adr() elle-même. L'expression tab%(0) est évaluée et donne un résultat dans un espace mémoire temporaire (pile par exemple), et c'est l'adresse de cet espace temporaire que retourne la fonction adr dans ce cas, et non l'adresse de la donnée qui se trouve à tab%(0).

C'est une des limitations de Panoramic - on ne fait que des passages de paramètres par valeur. On peut donc seulement passer les adresses de variables simples et des cellules de tableaux comme dans l'exemple ci-desssus si on ne fait que lire cette valeur dans la routine DLL, mais pas de tableaux entiers. Et si on veut écrire dans la variable, on ne peut passer que des variables simples non indexées: leur adresse est passée par valeur, mais on l'utilise comme pointeur pour écrire dedans.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
d.j.peters

d.j.peters


Nombre de messages : 77
Age : 59
Localisation : Germany
Date d'inscription : 31/07/2010

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 15:14

Hello Klaus
you are not right with adr(txt$)

it returns a address on an other pointer and this second pointer points to the first char.

pAdr = adr(txt$)

is in C
** char pAdr

and basic
as zstring ptr ptr pAdr

if you declare your dll as anything(char * &adr) than you can use it directly
be course it's a pointer by reference the same as pointer on pointer by value.

in more detail adr(txt$) points inside an string descriptor

struc string
int refrenc_counter
int nChars
* char pointer_chars this is the result of adr(txt$)
end struc

peek(adr(txt$)-4) is the same as len(txt$)

and after b$=txt$ the refrence counter increased from 1 to 2

You know it ?

DJ


Dernière édition par d.j.peters le Mar 10 Aoû 2010 - 11:57, édité 1 fois
Revenir en haut Aller en bas
http://shiny3d.de
Klaus

Klaus


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

Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR EmptyLun 9 Aoû 2010 - 19:05

Yes, in fact, I found it by the trial and error method. I hace a DLL routine using 2 Panoramic strins on input, here is the code:
Code:

function CompareStr(const s1,s2: pchar): integer; stdcall; export;
var
        pstr: PString;
        str1, str2: pchar;
begin
        pstr := PString(s1);
        str1 := pchar(pstr^);
        pstr := PString(s2);
        str2 := pchar(pstr^);

        result := AnsiCompareStr(str1,str2);
end;
But Jack says otherwise; I had a lengthy discussion with him about that problem, and he insisted that adr(s$) directly points to the string data area. Obviously, there is a problem, and I found the above workarround.

But your method is by far more elegant, and I will keep it. I know about the string structure width the length at offset -4 and the usage count at offset -8, but there is no valid way to temper with the string length. All you can do in Panoramic, is to allocate sufficient space by tloading some dummy string into the string variable, then pass its address to the function, then write into it checking either the string length or the zero byte.

All other hints about DLL's are fully valid.

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Problème avec DIM et ADR Empty
MessageSujet: Re: Problème avec DIM et ADR   Problème avec DIM et ADR Empty

Revenir en haut Aller en bas
 
Problème avec DIM et ADR
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Problème avec select case Probleme réglé merci
» Problème avec ASC(a$)
» Problème avec la 3D.
» Problème avec la 3D.
» Problème avec KGF.CHM.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: