[EN] [IT]
  [INFO] [ACQUÉRIR] [PLAN] [RESSOURCES]

ACCÈS RAPIDE

CONVERSIONS DEPUIS FBII
SYNTAXE PERMISSIVE DE FBII
PRÉFÉRENCES

[Sommaire des FAQ]
[FAQ suivantes]
[FAQ précédentes]
Mise à jour
21 jan. 2000

FAQ #4 :: DE FBII VERS FB^3
CONVERSIONS DEPUIS FBII

[Q]: En ouvrant un projet FBII dans FB^3 l'ordre des fichiers est alpahbétique. Ne serait-ce pas mieux de placer les fichiers inclus dans l'ordre où ils apparaissent dans le code?
[R]: Vous pouvez [devrez même] mettre les fichiers inclus dans l'ordre de votre choix. Au moment de la conversion, FB n'a aucune idée de l'ordre que vous désirez donner à vos fichiers, ainsi il les présente par ordre alphabétique, tels qu'ils apparaissaient dans le Gestionnaire de Projet de FBII.

[Q]: Dans mon projet l'option "DIM ALL VARS" ne détecte pas certaines variables que j'ai omis de déclarer! En cherchant j'ai trouvé qu'il n'y avait pas de fichier ".GLBL" dans les fichiers où l'absence de déclaration n'est pas signalée . De même, toutes les fonctions dans l'"INCL" sont LOCAL, mais je ne pense pas que ceci entre en jeu. Lorsque j'ai retiré toutes les déclarations de GLOBAL de mon fichier principal [".MAIN"] pour les mettre dans un fichier ".GLBL", le Compilateur a bien détecté l'erreur [des absences de déclaration].
[R]:  Vous avez certainement une ligne de type "COMPILE" qui est restée dans votre pojet et qui doit être retirée.

[Q]:  J'ai mis à jour mes fichiers runtime ".INCL" dans mon projet, mais j'ai encore des dizaines d'avertissements de type:
"Avertissement: Cet appel Toolbox ne retourne pas de résultat.
Le compilateur a forcé le résultat à zéro.
dans le fichier Studio Manager.*:RUNTIME.INCL à la ligne 219 dans PGREPLACERES
OSErr = FN HNOPURGE(resHndl&)"
[R]:  Certains des appels de la Toolbox qui ne retournent plus de valeur provoquent un avertissement de ce type afin de vous prévenir que OSErr ne contient pas une valeur utilisable. En changeant votre appel à CALL HNOPURGE() [CALL étant facultatif bien-sûr] vous n'obtiendrez plus cet avertissement.

[Q]:  Je n'arrive pas à trouver une manière facile d'ouvrir et de convertir un seul ficher à inclure. Je l'ouvre et le convertit dans FB^3 mais il garde son icône de FBII, et en double-cliquant dessus c'est FBII qui est lancé.
[R]:  Si je vous comprends bien, tout ce vous cherchez à faire est de changer la signature de FBII (ZBAS) en FB^3 (FB^e). personnellement j'utilise Snitch pour ça, mais vous pouvez aussi bien employer ResEdit ou Resourcerer.

[Q]:  J'ai une carte d'acquisition qui dialogue avec des cartes A/D de chez National Instruments. Ceci se passe à travers une vingtaine de fonctions fournies par Nat. Instruments pour FBII. Elles utilisent une structure CALL F&(...) que FB^3 ne semble pas aimer...
[R]:  Je pense que les fonctions fournies par National Instruments sont à l'origine de vos ennuis. À cause de la manière dont National Instruments a choisi de les faire fonctionner, au mieux elles marchaient aléatoirement, sans que cela soit une faute imputable à votre application. Nous travaillons actuellement avec NI afin de moderniser leurs fonctions. En attendant essayez ceci:
LOCAL MODE
DIM f&,longVal&
LOCAL FN Lab_ISCANCheck(devNum&, ¬
  bdstatus&, retrieved&, scanOrder&)
  _xParams=_Pascalstk_rtnLong_p1long_p2Long_p3Long_P4Long
f&=[FN libraryResource&] + _LabISCANCheck
longVal&=universalfn(f&,_xParams,devNum&,¬
  bdstatus&,retrieved&,scanOrder&)
END FN=LongVal&
je n'ai pas eu le temps de le tester mais cela devrait fonctionner en PPC & 68K.


[haut de la page]

[Q]:
  Dans FBII, j'utilisais beaucoup d'expressions du genre:
TEXT _monaco,9,,
avec 2 virgules à la fin pour indiquer que les valeurs de 'style' et de mode de transfert ne devaient pas changer. Dans FB^3 j'ai une erreur "une valeur numérique ou une chaîne attendue ici".
[R]:  Le fait de mettre des valeurs [par exemple: zéro] élimine le message d'erreur: TEXT _monaco,9,0,0

[Q]:  Il manque ces appels de la Toolbox dans FB¨3:
• UpperText
• LowerText
• StripText
• StripUpperText
• UprString
Est-il possible de les rajouter?
[R]:  Apple les considère comme obsolètes. Ils ont été remplacés par:
• UppercaseText
• LowercaseText
• StripDiacritice
• UppercaseStripDiacritics
• UpperString

Vous les trouverez dans le fichier header "Tlbx Standard.Incl", et à la fin de ce fichier une fonction LOCAL FN UprString est définie que vous pouvez appeler comme n'importe quelle autre fonction. Afin d'utiliser ceux-ci ainsi que les autres nouveaux appels de la toolbox, il faut donc inclure ce fichier dans votre projet. Les 4 premiers d'entre eux ont un troisième argument qui n'est pas présent dans les versions antérieures, je crois. L'exemple suivant devrait vous aider à démarrer:
window 1
dim a$
a$ = "Salut-à-Toi"
LowercaseText(@a$, len(a$),0)
print a$
fn UprString(@a$)
print a$
do
until fn button

[Q]:  D'accord, je me rends! Quelles sont les constantes pour le menu Pomme lorsqu'il se trouve dans une ressource?
[R]:  Print _AppleResMenu, _AppleMenu
FBII: 127,255
FB^3: 127,254

[Q]:  Seulement un petit mot afin de signaler que FB^3 ne différencie pas les majuscules et les minuscules [pour les constantes, les fonctions etc]. Ceci devrait être mentionné dans la documentation sur la conversion, mais je n'y ai pas trouvé trace...
[R]:  OK

[Q]:  Je crois que nous avons besoin de savoir quand et comment, FB^3 effectue des arrondis. J'ai fait le tableau suivant:
Quand vous faites: Vous obtenez:
a% = 99.49 a% contient 99
a% = 99.5 a% contient 100
a% = 199/2 a% contient 99
a% = 199\2 a% contient 100

a# = 199/2
a% = a# a% contient 100

a$ = USING"###.#";100.54 a$ contient 100.5
a$ = USING"###.#";100.55 a$ contient 100.5
a$ = USING"###.#";100.555 a$ contient 100.6
a$ = USING"###.#";100.56 a$ contient 100.6

a# = 0.1234567895
a& = a# * 1000000000 a& contient 123456790
[non-projet, émulation FBII]. J'espère que ceci vous sera utile.
[R]:  D'accord. Merci.

[Q]:  Que se passe-t-il quand le curseur "ballon de plage" arrête de tourner lors d'une compilation?
[R]:  Ce délai se produit une fois que le compilateur a terminé, a tout enregistré sur disque et est en train de lancer votre application compilée. Le système doit à ce point purger le fichier cache avant le lancement de votre appli. C'est à ce moment que le curseur s'arrêrte de tourner.

[Q]:  Avec FBII un DEF FN devait utiliser USING puis globaliser la fonction FN. La nouvelle manière de faire les choses avec FB^3 élimine le besoin d'employer USING et la phase de globalisation... Toutes mes fenêtres doivent être disponibles pour un appel gérant un clic sur un bouton à partir de n'importe quel endroit dans mon code.. Donc, avec FBII je définissais une paire le gloables pour la fenêtre et sa constante
DIM gB1ContntWIND&
_contnt1WIND = 1
DIM gB2ContntWIND&
_contnt2WIND = 2
etc.
De la manière que je comprends les choses... Aujourd'hui la commande DEF FN est effectivement une combinaison de la globale et de la fonction FN, j'élimine donc le besoin de globaliser la fonction FN correspondant à la fenêtre, la DEF FN sera disponible de n'importe où dans mon projet, comme s'il l'avait globalisée
_contnt1WIND = 1
DEF FN B1ContntWIND
_contnt2WIND = 2
DEF FN B2ContntWIND
etc.
Si ceci est vrai, alors il serait drôlement pratique d'utiliser des variables globalisées et des DEF FNs en tant que partie de presque toutes mes FN...
[R]:  Pas tout à fait vrai: FBII utilisait l'adresse globale afin d'appeler la fonction. En d'autres termes, il sautait jusqu'à la ligne contenant DEF FN USING qui à son tour sautait à la ligne contenant la vraie fonction. FB^3 n'a besoin que d'un prototype. Il a besoin de savoir pour telle ou telle fonction si le paramètre "x" doit être un entier long, un entier, etc. FB^3 ne saute pas jusqu'à la DEF FN, il ne l'utilise pour pour le formatage des données à passer, et ce prototypage n'est nécessaire que lorsque vous appelez une fonction avant de l'avoir déclarée.

[Q]:  BLOCKMOVE (ptr1&,ptr2&,blkSize&)
Quand j'utilise cela dans mon code, FB^3 n'aime pas les parenthèses, en regardant mon code FBII, je ne trouve pas de parenthèses... que se passe-t-il?.
[R]:  BLOCKMOVE est à la fois une appel à la Toolbox et un mot-clé [obsolète] de FBII et FB^3. L'Éditeur le formate en tant que mot-clé FB^3, mais le compilateur reconnaît la différence si vous faites précéder l'appel Toolbox par CALL.
DIM ptr1&,ptr2&,blkSize&
CALL BLOCKMOVE (ptr1&,ptr2&,blkSize&)
ou
BLOCKMOVE ptr1&,ptr2&,blkSize&
La version Runtime est un tout petit peu pénalisée sur temps, car le Runtime doit la reformater avant d'appeler l'instruction Toolbox BLOCKMOVE. La fonctionnalité des deux versions est identique.
La question de formatage de LINE et CALL LINE est semblable, mais la version Runtime FB^3 de LINE fait tout autre chose que l'appel Toolbox CALL LINE

[haut de la page]

SYNTAXE PERMISSIVE DE FBII

[Q]:  Le fait de permettre à un Handle de ne plus se terminer par "&" peut nécessiter des changements assez fondamentaux afin d'éviter la confusion. Mais quid de la fonction BUTTON& qui retourne un Handle? Ne serait-elle pas mieux rnommée autrement? [Dans les fichiers d'exemple FBII, beaucoup de variables qui servaient de Pointeurs [même si la plupart du temps il s'agissait d'adresses] possédaient un suffixe "&"].
[R]:  Un Handle est un entier long, mais un entier long n'est pas nécessairement un Handle.
DIM quelquechose.8 pourrait être un rect ou tout autre chose
DIM qualquechose AS RECT est clairement un rect. 

[haut de la page]

PRÉFÉRENCES

[Q]:  Erm.. une fois que j'ai choisi "Adapter à FBII" dans les Préférences, comment puis-je revenir sur mon choix?
[R]:  Cliquez sur le bouton Annuler. 
  © 2000 Pix&Mix  
  Tous droits réservés
INFO  |  ACQUÉRIR |  PLAN  |  RESSOURCES

  FutureBASIC est une marque déposée appartenant à Staz Software, Inc et utilisée avec permission.