Spécial ! |
Version mobile de l'aldweb Site m.aldweb.com Ni Français, ni Anglais ?Essayez donc l'un de ces drapeaux :
|
|
Météo / Spam / www |
Météo Lyon
aldweb contre le SPAM
|
|
|
|
|
|
|
- Forum - Palm
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 257
Sujet n° 1200 |
Définir un StringPtr |
le 25/04/2005 @ 23:45 par Alain
|
Bonsoir, j'aimerai utiliser la fonction ctlSetLabel pour attribuer un label à un bouton dans le prog. Le problème est que cette fonction accepte un StringPtr et je ne sais pas comment, à partir d'une string définir un pointeur de chaîne. Pouvez-vous m'aider ? Merci d'avance. Alain |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 1 -------- le 28/04/2005 @ 22:49 par Alain
visiteur |
j'ai trouvé un moyen en utilisant StrStr. Cette fonction renvoi un StringPtr sur le début d'une chaine contenu dans une chaine. Si on prend comme paramètre 2 fois la même chaine, le StringPtr pointe le début de la dite chaine. Un peu tiré par les cheveux mais ça marche. Un moyen plus simple ? Merci d'avance. Alain |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 2 -------- le 28/04/2005 @ 22:52 par aldweb
visiteur |
Alain,
Voici la définition d'un StringPtr en Pascal :
Type StringPtr = ^String;
Un peu moins tiré par les cheuveux
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 3 -------- le 29/04/2005 @ 01:36 par Alain
visiteur |
Merci mais j'ai bien peur de ne pas comprendre comment mettre ça en pratique. Supposons une variable string nommée MaChaine ayant pour valeur 'MonTexte' Le type StringPtr étant déjà défini dans PalmAPI1.pas (j'ai oublié de précisé que je programme sur PPcompiler ..), je ne vois pas comment faire ensuite avec ma variable. Merci encore Alain |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 4 -------- le 29/04/2005 @ 01:59 par aldweb
visiteur |
Reprenons. Tu peux faire un truc comme ceci :
Procedure SetMyLabel(MyObjID:UInt16); var MyString: String; FrmP: FormPtr; ObjI: UInt16; begin MyString:='Toto'; FrmP:=FrmGetActiveForm; ObjI:=FrmGetObjectIndex(FrmP,MyObjID); CtlSetLabel(FrmGetObjectPtr(FrmP,ObjI),@MyString); end. Note le @ devant MyString qui indique que je pointe vers son adresse
Ou alors, avec le StringPtr :
Procedure SetMyLabel(MyObjID:UInt16); type StringPtr = ^String; var MyStringP: StringPtr; FrmP: FormPtr; ObjI: UInt16; begin MyStringP^:='Toto'; FrmP:=FrmGetActiveForm; ObjI:=FrmGetObjectIndex(FrmP,MyObjID); CtlSetLabel(FrmGetObjectPtr(FrmP,ObjI),MyStringP); end.
Enfin, teste ça avant de le valider, c'est du code que je te tape à la volée à cette heure déjà matinale... donc sans garantie aucune ! Surtout que je me banane tout le temps sur ces foutus pointeurs
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 5 -------- le 29/04/2005 @ 14:15 par Alain
visiteur |
Bonjour, la solution avec l'@ fonctionne bien (je ne connaissais pas ...) Par contre, le MyStringP^:='Toto' me pose encore un problème (plantage du Palm) Je regarde ça de près et te tiens au courant. Merci de ton aide. Alain |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 6 -------- le 29/04/2005 @ 17:55 par Alain
visiteur |
Je confirme. MyStringP^:='Toto' provoque un plantage du Palm sauf si la chaine ne comprend que 1 ou 2 caractères. Dans ce cas il ne se passe rien du tout (je veux dire que le pushButton dont je modifie le libellé reste noir et il n'y a aucun plantage) Etonnant, non ? (comme dirait le regretté Desproges) Problème de compilateur ? Problème de programmeur ? |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 7 -------- le 29/04/2005 @ 21:29 par aldweb
visiteur |
Et un truc du genre ?
MyStringP^:='Toto'+chr(0);
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 8 -------- le 30/04/2005 @ 11:31 par Alain
visiteur |
pour obtenir une chaine se terminant par 0. j'ai essayé mais pour le moment, pas de changement. Je vais reprendre ça dans un programme plus dépouillé pour être sur de ne pas faire de bétise et je te tiens au courant. A tout hazard, j'ai posé la question à Philippe Guillot des fois que coté compilateur .... Merci de ton aide. A+ Alain |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 9 -------- le 30/04/2005 @ 12:10 par aldweb
visiteur |
Tu auras importuné Philippe pour rien, son compilo fonctionne dans ce domaine c'est sûr et certain !
C'est plus mon petit exemple de code qui doit avoir un petit bug quelque part, mais je l'avais écrit à 1 heure du matin de mémoire et je ne l'ai pas vraiment re-regardé depuis...
@+ aldweb |
|
|
Warning: A non-numeric value encountered in /web5/aldweb/www/aldweb_com/www/thread.php on line 497
Réponse n° 10 -------- le 30/04/2005 @ 13:27 par Alain
visiteur |
j'espère que non. J'ai juste laissé ma question sur le forum afin que d'autres newbies de mon espèce puisse éventuellement apprendre des bricoles (tel que le @ par exemple) @ suivre .... |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|
|
|
|
|
|