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
» demande explication KGF pour imprimer en mm
Problème en adressage de strings par ADR() ? Emptypar JL35 Hier à 17:28

» Petit passage furtif
Problème en adressage de strings par ADR() ? Emptypar Froggy One Mer 27 Mar 2024 - 14:26

» SPIN et aide langage (résolu)
Problème en adressage de strings par ADR() ? Emptypar leclode Sam 23 Mar 2024 - 15:20

» Aide-mémoire des mots-clés Panoramic
Problème en adressage de strings par ADR() ? Emptypar papydall Mer 20 Mar 2024 - 21:23

» Je ne comprend pas pourquoi la largeur de la scene 3d change
Problème en adressage de strings par ADR() ? Emptypar Marc Mar 12 Mar 2024 - 20:06

» Comment télécharger panoramic?
Problème en adressage de strings par ADR() ? Emptypar lepetitmarocain Sam 9 Mar 2024 - 13:31

» @lepetitmarocain <==> KGFGrid
Problème en adressage de strings par ADR() ? Emptypar Klaus Dim 3 Mar 2024 - 9:59

» Tangram-Toukaré
Problème en adressage de strings par ADR() ? Emptypar jjn4 Mer 28 Fév 2024 - 18:12

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème en adressage de strings par ADR() ? Emptypar jjn4 Mer 28 Fév 2024 - 18:09

» KGF_dll - nouvelles versions
Problème en adressage de strings par ADR() ? Emptypar Klaus Mer 28 Fév 2024 - 17:01

» Mes souhaits d'amélioration de Panoramic.
Problème en adressage de strings par ADR() ? Emptypar Pedro Lun 26 Fév 2024 - 18:12

» Testez-votre-QI
Problème en adressage de strings par ADR() ? Emptypar jjn4 Dim 25 Fév 2024 - 17:12

» Utilisation d'Élip
Problème en adressage de strings par ADR() ? Emptypar jjn4 Sam 24 Fév 2024 - 18:33

» Récapitulatif ludothèque panoramic jjn4
Problème en adressage de strings par ADR() ? Emptypar jjn4 Sam 24 Fév 2024 - 18:11

» Générateur de mots de passe
Problème en adressage de strings par ADR() ? Emptypar mindstorm Mar 20 Fév 2024 - 20:09

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier
Le Deal du moment :
Coffret dresseur d’élite ETB ...
Voir le deal
56.90 €

 

 Problème en adressage de strings par ADR() ?

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


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

Problème en adressage de strings par ADR() ? Empty
MessageSujet: Problème en adressage de strings par ADR() ?   Problème en adressage de strings par ADR() ? EmptySam 19 Fév 2011 - 22:56

Pendant mes tests pour un problème avec mon WebBrowser, signalé par Ygeronimi, je suis tombé sur un comportement curieux. Je passe un string en paramètre de la manière suivante:

En Panoramic:
Code:

dim x$, ax%, i%

x$ = "ma chaîne de caractères"
ax% = adr(x$)

i% = dll_call1("MaFonction",ax%)

En Delphi, dans ma DLL, je reçois le string de la manière suivante:
Code:
function MaFonctionl(Chaine: pstring): integer; stdcall; export;
var
        MaChaine: WideString;
begin
        MaChaine := Chaine^;
showmessage(MaChaine);

Avec la version V09.21i1, je récupère bien ma chaîne, et elle est affichée par showmessage.
Avec la version V09.31i3, je récupère une chaîne vide.

Qu'est-ce qui a changé % La fonction adr() retourne une valeur non-nulle, mais visiblement, ce n'est plus un pointeur sur la partie data de la chaîne; ça pointe peut-être sur un zéro.

Je précise que j'utilise le même source Panoramic pour tester dans les deux versions, et la même dll avec ma fonction Delphi. La seule différence, c'est l'éditeur.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1246
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Problème en adressage de strings par ADR() ? Empty
MessageSujet: Re: Problème en adressage de strings par ADR() ?   Problème en adressage de strings par ADR() ? EmptyMar 22 Fév 2011 - 9:28

Bonjour Klaus,

Je viens juste d'installer la dernière version 0.9.21i3 et je n'ai pas ce problème avec mes DLL en FreeBASIC.

Je n'ai pas encore testé avec Delphi.

En FreeBASIC je passe le pointeur par référence (byref p as zstring ptr), comme l'avait conseillé D. J. Peters. Peut-être faut-il faire de même en Delphi (var p : pstring) ?

En revanche, je n'ai toujours pas trouvé comment retourner à Panoramic une chaîne de caractères qui a été modifiée dans la DLL.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Klaus

Klaus


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

Problème en adressage de strings par ADR() ? Empty
MessageSujet: Re: Problème en adressage de strings par ADR() ?   Problème en adressage de strings par ADR() ? EmptyMar 22 Fév 2011 - 15:16

Pour retourner un string à Panoramic, il y a plusieurs solutions.

Première possibilité:
Code:
function FileCreate(root, filter, fichier, filsiz: integer):integer; stdcall; export;
var
    fic: string;
    exist: boolean;
    pstr: pstring;
    KGFSaveDialog: TSaveDialog;
    sfic: integer;
    sfichier: integer;

begin
    KGFSaveDialog := TSaveDialog.Create(nil);
    pstr := pstring(root);
    KGFSaveDialog.InitialDir := pstr^;
    pstr := pstring(filter);
    KGFSaveDialog.Filter := pstr^;
    exist := KGFSaveDialog.Execute;
    fic := '_';
    result := 0;
    if exist then
        begin
            fic := KGFSaveDialog.FileName;
            sfic := sizeof(fic);
            sfichier := filsiz;
            if sfic<sfichier then sfichier := sfic;
            pstr := pstring(fichier);
            move(fic,pstr^,sfichier);
            if fileexists(fic) then
                result := 2
            else
                result := 1;
        end;
    KGFSaveDialog.Free;
end;

2ème possibilité:
Code:
// sélection un répertoire avec création
function FolderSelectWithCreate(root, folder, sfolder: integer): integer; stdcall;
var
    dir: string;
    sfic, sfold: integer;
    pstr: pstring;
    i: integer;
    PB: pByte;
    char: pchar;
begin
    pstr := pstring(root);
    dir := pstr^;
    if SelectDirectory(dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then begin
        sfic := length(dir);
        sfold := sfolder;
        PB := pbyte(pstring(folder)^);
        if sfic<sfold then sfold := sfic;
        for i:=1 to sfold do begin
            char := pchar(midstr(dir,i,1));
            PB^ := Byte(char^);
            inc(PB);
        end;
        result := 1;
    end else begin
        result := 0;
    end;
end;

3ème possibilité:
Code:
// send a text message to Panoramic Edit field by field handle
function IPCSendMessage(const mes: pchar; const lon: integer; const hnd: integer): integer; stdcall; export;
var
        i: integer;
        pstr: PString;
        str1: pchar;
begin
        pstr := PString(mes);
        str1 := pchar(pstr^);
        i := SendMessage(hnd, WM_SETTEXT, lon, LParam(str1)); //on récupere le texte
        result := i;
end;

La dernière possibilité permet d'intercepter, en Panoramic, l'arrivée du texte par un évènement on_change. J'ai aussi le code pour trouver le handle d'un objet EDIT si cela t'intéresse.

Ces 3 exemples sont extraits de ma dll KGF.dll, et ce sont donc des routines qui marchent. Je suis sûr qu'il y a d'autres moyens de retourner un string, mais ce sont ceux que j'ai trouvés.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Problème en adressage de strings par ADR() ? Empty
MessageSujet: Re: Problème en adressage de strings par ADR() ?   Problème en adressage de strings par ADR() ? Empty

Revenir en haut Aller en bas
 
Problème en adressage de strings par ADR() ?
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec guillements dans des strings
» Adressage des pixels d'un picture
» Comparaison de strings en ASCII strict
»  1.84 18/11/2012 ajout fonctions de strings
» Problème avec select case Probleme réglé merci

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: