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.
Problème avec ADR() et procédures Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Problème avec ADR() et procédures Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Problème avec ADR() et procédures Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Problème avec ADR() et procédures Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Problème avec ADR() et procédures Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Problème avec ADR() et procédures Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Problème avec ADR() et procédures Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Problème avec ADR() et procédures Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Problème avec ADR() et procédures Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Problème avec ADR() et procédures Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Problème avec ADR() et procédures Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Problème avec ADR() et procédures Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Problème avec ADR() et procédures Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Problème avec ADR() et procédures Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Problème avec ADR() et procédures 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
Le Deal du moment : -14%
Lave-linge hublot HOOVER HWP 10 kg (Induction, 1600 ...
Voir le deal
299.99 €

 

 Problème avec ADR() et procédures

Aller en bas 
+2
Yannick
Klaus
6 participants
AuteurMessage
Klaus

Klaus


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

Problème avec ADR() et procédures Empty
MessageSujet: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 10:47

J'essaie d'utiliser ADR() dans une procédure, avec des paramètres formels et des variables locales, en chaîne de caractères.

Cela ne semble pas marcher. Seules les variables globales donnent une chaîne correcte, lorsqu'on passe leur adresse à une DLL..

J'ai fait une mini-DLL pour tester cela. Elle contient une seule fonction avec un seul paramètre qui est censé être adr(chaine$). Et dans la DLL, je récupère la chaîne dans une variable string et je l'affiche. J'ai fait un petit programme Panoramic avec une procédure qui appelle cette fonction DLL 3 fois:
1 - avec une chaîne passée en paramètre
2 - avec une chaîne dans une variable locale
3 - avec une chaîne dans une variable globale.
Seule cette dernière donne le bon résultat.

Jack, pourrais-tu m'indiquer où je commets une erreur logique ? Ou y a-t-il une différence fondamentale dans le traitement à ce niveau ?

Voici la DLL:
Code:
library test1;

{
{$R *.res}

uses
  Dialogs;

type
  PString = ^String;

function test_ADR(s: pstring): integer; stdcall; export;
var
  x: string;
begin
  x := s^;
  showmessage('test_adr: ['+x+']');
  result := 0;
end;

exports
  test_ADR;

  begin
end.

Et voici le programme Panoramic:
Code:
' test_ADR() avec DIM_LOCAL

dim s_global$

dll_on "test1.dll"
test_adr("Paramètre constant")

end

sub test_adr(x$)
  dim_local i%, s_local$

  i% = dll_call1("test_ADR",adr(x$))

  s_local$ = "Variable locale"
  i% = dll_call1("test_ADR",adr(s_local$))

  s_global$ = "Variable globale"
  i% = dll_call1("test_ADR",adr(s_global$))
 
end_sub

Merci à toi, Jack (et à tous ceux qui ont Delphi6), de bien vouloir jeter un oeil sur ce problème !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Problème avec ADR() et procédures Empty
MessageSujet: re   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 12:25

@ Klaus,

cela reprend le problème que j'avais déjà signalé sur l' adr d'une dim_local...
...que tu avais jugé comme un...j'ose plus dire le mot sous peine de me faire jeter...

https://panoramic.1fr1.net/t2511-d-apres-vous-ou-est-le-probleme

Jack ne s' était pas exprimé sur ce sujet mais la constatation avait été faite ... Laughing


Dernière édition par ygeronimi le Ven 28 Sep 2012 - 12:38, édité 1 fois
Revenir en haut Aller en bas
Klaus

Klaus


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 12:37

C'est aussi mon impression, mais moi aussi, je deviens TRES prudent avec le mot magique...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 13:06

Bah faut pas être parano non plus, JACK nous a fournit une version de test, s'il y a des bugs, c'est normal, il n'a pas pu tester tous les cas de figure et penser à tout. C'est bien pour cela que l'on fait des tests. Tant que l'on emploi pas ce mot à la légère et que l'on essaye de vérifier un peu avant, je ne pense pas que ce soit le style de Jack de vous fouetter à sang par ce que vous employez ce mot Wink
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 13:14

Ce qui fait du mal au forum, c'est la liste défilante à gauche...
Peut être qu'en rajoutant un filtre sur les rubriques qui doivent être affichées dans cette liste, cela arrangerai bien des choses... Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jack
Admin
Jack


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 13:16

Bon, ben alors je vais le sortir le mot magique: il y a effectivement un bug dans la fonction ADR quand la variable est locale.
Du moins, c'est ce que je crois en examinant le source de Panoramic.
Je testerai pour confirmer, mais je suis à peu près sûr, puis je le corrigerai pour la prochaine version instantanée, lorsque je le pourrai, d'ici quelques jours.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 14:02

Problème avec ADR() et procédures X_HELL%7E1 Klaus

J’ai compilé ta DLL et je l’ai testé avec le programme donné en exemple.
Je confirme ce que tu as constaté.
Pour pouvoir utiliser la DLL avec une chaine passée en paramètre, je déclare dans la SUB une variable globale param$ à laquelle j’affecte le paramètre d’appel
Puis je libère cette variable par free à la fin de la SUB.

Ce n’est pas idéal mais ça peut marcher
Code:

' test_ADR() avec DIM_LOCAL

dim s_global$

dll_on "D:\Panoramic\Mes programmes\Mes Essais\test1.dll"
test_adr("Paramètre constant")

end

sub test_adr(x$)
  dim_local i%, s_local$
  dim param$ : param$ = x$

  i% = dll_call1("test_ADR",adr(param$))

  s_local$ = "Variable locale"
  i% = dll_call1("test_ADR",adr(s_local$))

  s_global$ = "Variable globale"
  i% = dll_call1("test_ADR",adr(s_global$))
  free param$
end_sub
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Problème avec ADR() et procédures Empty
MessageSujet: re   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 14:04

Au risque de faire du hors sujet,

Ce qui serait préjudiciable à PANORAMIC n'est ni le mot magique, ni la liste défilante.
Ce serait que le "mot magique" perdure sur un même problème pendant des semaines
comme dans certains langages abandonnés par leurs auteurs.

Ici lorsque l'on sort le "mot magique" on peut voir un multitude de réactions, de solutions
dérivantes être mises au point par tous et une réaction instantanée de l'auteur qui corrige.

Et çà, c'est la meilleur des PUB.

Problème avec ADR() et procédures Dejadehors
Revenir en haut Aller en bas
Klaus

Klaus


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptyVen 28 Sep 2012 - 14:56

@Jack:
Merci de ton attention. As-tu vu que le même problème existe si l'on veut utiliser ADR() avec le paramètre formel d'une procédure ? Dans mon programme exemple, c'est le premier appel à test_ADR().

@Papydall:
C'est comme ça que je m'en sors pour le moment.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptySam 29 Sep 2012 - 12:56

Le bug qui empêchait ADR() de retourner l'adresse d'une variable locale ou d'une variable formelle a été corrigé. La correction sera effective pour la prochaine version.
Je m'attaque aux autres bugs : tableaux locaux et autres.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Problème avec ADR() et procédures Empty
MessageSujet: re   Problème avec ADR() et procédures EmptySam 29 Sep 2012 - 13:42

Problème avec ADR() et procédures Panneau-Merci pour tout Jacks
Revenir en haut Aller en bas
Klaus

Klaus


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

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptySam 29 Sep 2012 - 14:47

Merci beaucoup, Jack ! C'est vraiment très encourageant, pour nous, la façon dont tu gères les bugs avérés.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures EmptySam 29 Sep 2012 - 16:02

Comme toujours la résolution des bugs est prioritaires Wink Bonne continuation Jack
Revenir en haut Aller en bas
Contenu sponsorisé





Problème avec ADR() et procédures Empty
MessageSujet: Re: Problème avec ADR() et procédures   Problème avec ADR() et procédures Empty

Revenir en haut Aller en bas
 
Problème avec ADR() et procédures
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec DTP de KGF
» Problème avec select case Probleme réglé merci
» problème avec edit ou bien avec combo?
» Problème avec kgf.chm.
» Problème avec RemoveStringBetweenDelimiters.

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: