Portage de Gambas 2 en Gambas 3

Ce tableau tente d’inventorier tous les changements incompatibles entre Gambas 2 et Gambas 3.

Quand le convertisseur de projet de l’IDE réalise une conversion automatique, il insère des commentaires commençant par la chaîne [GB2:XXXX], où XXXX est le mémo identifiant de quatre lettres décrivant quelle conversion a été effectuée.

Mémo identificateur Symptôme Détails Gambas 2 Gambas 3
ARRD "Syntax error" lors de la déclaration de tableaux Lors de la déclaration d’un tableau dimensionné vous devez désormais employer le mot clé NEW.
DIM sCommand AS String[5]
Dim sCommand As New String[5]
BCOL erreur "Unknown symbol 'BackColor'..." La propriété BackColor de la classe Control a été supprimée. Utilisez Background à la place.
MyLabel.BackColor = Color.Background
MyLabel.Background = Color.Background
BIND erreur "Too many arguments" avec UdpSocket.Bind() La Méthode UdpSocket.Bind() ne peux plus prendre d’argument Port.

Utilisez plutôt la propriété Port.
hBroadcastEvent.Bind(0)
hBroadcastEvent.Port = 0
hBroadcastEvent.Bind()
CLNG erreur "Unknown identifier 'CLng'" La fonction synonyme CLng() a été supprimée.

Utilisez CLong() en remplacement.
CLng(...)
CLong(...)
CSNG erreur "Unknown identifier 'CSng'" La fonction synonyme CSng() a été supprimée.

Utilisez CSingle() en remplacement.
CSng(...)
CSingle(...)
DBGV erreur "Unknown symbol 'gridview' dans la classe 'DataBrowser'" La propriété gridview du contrôle DataBrowser a été renommée View.
DataBrowserLog.GridView
DataBrowserLog.View
DMRG message d’alerte "DrawingArea.Merge is deprecated" DrawingArea.Merge ne fait plus rien. Vous ne pouvez pas le supprimer.
MyDrawingArea.Merge = TRUE
' Rien
DSUB SQL errors with database methods Les arguments de DB.Exec() et DB.Subst() supérieurs à neuf doivent désormais être compris entre {}.
MyConnection.Exec("UPDATE devices SET name = &1,_
module = &2, interface = &3, address = &4,_
location = &5, label = &6, label2 = &7,_
label3 = &8, value = &9, officon = &10, onicon = &11")
MyConnection.Exec("UPDATE devices SET name = &1,_
module = &2, interface = &3, address = &4,_
location = &5, label = &6, label2 = &7,_
label3 = &8, value = &9, officon = &{10}, onicon = &{11}")
FCOL erreur "Unknown symbol 'ForeColor'..." La propriété ForeColor de la classe Control a été supprimée. Utilisez Foreground à la place.
MyLabel.ForeColor = Color.Red
MyLabel.Foreground = Color.Red
FNTH erreur "Not an objet" lors de l'utilisation de Font.Height Font.Height est maintenant une propriété. L'ancienne méthode Font.Height() a été renommée Font.TextHeight().
Font.Height("text")
Font.TextHeight("text")
FNTW erreur "Unknown symbol 'Width'" lors de l'utilisation de Font.Width La méthode Font.Width() a été renommée Font.TextWidth().
Font.Width("text")
Font.TextWidth("text")
FRMT Unexpected spaces printed with Format$. En Gambas 3, les caractères de formatage inutilisés dans la fonction Format() sont remplacés par des espaces, alors qu’ils étaient ignorés en Gambas 2.

Utilisez moins de caractères de formatage. Les chiffres excédentaires seront tout de même imprimés.
Format(Number, "####")
Format(Number, "#")
IMGS Erreur "Too many arguments" avec la méthode Image.Stretch() La méthode Image.Stretch() ne possède plus de troisième argument. Supprimez le.
MyImage = MyImage.Stretch(64, 64, TRUE)
MyImage = MyImage.Stretch(64, 64)
INCB message d’alerte "Boolean incrementation is deprecated" INC Boolean ou DEC Boolean n’est plus permis. Utilisez plutôt Boolean = Not Boolean.
INC Boolean
DEC Boolean
Boolean = Not Boolean
ISTY Erreur "Type mismatch" à l'utilisation de IsBoolean(), IsString(), or toute fonction Is<Type>() Les fonctions Is<Type>() on été complètement revues en Gambas 3. Au lieu de vérifier le type de donnée d’une expression, elles testent maintenant si une chaîne peut être, de manière sûre, convertie en un type de donnée spécifique avec la fonction Val().

Utilisez plutôt TypeOf() pour faire la vérification.
IF IsBoolean(Value) THEN ...
IF IsByte(Value) THEN ...
IF IsShort(Value) THEN ...
IF IsNumber(Value) THEN ...
...
If TypeOf(Value) = gb.Boolean THEN ...
If TypeOf(Value) = gb.Byte THEN ...
If TypeOf(Value) = gb.Short THEN ...
If TypeOf(Value) <= gb.Float THEN ...
...
OPEN Erreur "Unexpected OPEN" avec l’instruction OPEN La syntaxe de l’instruction OPEN a changé.
OPEN sBaseDir &/ "logs" &/ sMainLogFile FOR APPEND AS #hMainLogFile
hMainLogFile = Open sBaseDir &/ "logs" &/ sMainLogFile For Append
OVER Erreur "/Class/.*Symbol* is badly overridden in class *OtherClass/" Quand vous ré-implémentez un symbole dans une classe héritée, Gambas 3 vérifie maintenant que la déclaration du symbole dans la classe fille est compatible avec celle de la classe parent.

Soit vous corrigez la déclaration du symbole dans la classe fille, soit vous utilisez un autre nom pour ce symbole.
' Dans un formulaire
Private Delete As [../../comp/gb.qt/button]
' Dans un formulaire
Private btnDelete As Button
QUES Erreur "Unknown identifier 'xxxx?'" Toutes les fonctions test terminées par un point d'interrogation ont été supprimées. Utilisez à la place les fonctions synonymes commençant par "Is".
Dir?(...)
Null?(...)
Integer?(...)
...
IsDir(...)
IsNull(...)
IsInteger(...)
...
QUOT Erreur "Unknown identifier 'Quote'" Les classes quote et Unquote ont été supprimées.

Remplacez Quote.Shell par Shell$().
Quote.Shell("...")
Shell$("...")
SLAY Erreur "Type mismatch. Integer expected" avec la propriété Splitter.Layout La propriété Splitter.Layout prend maintenant un tableau d'entiers à la place de la chaîne de valeurs séparées par des virgules.
MySplitter.Layout = "500,500"
MySplitter.Layout = [500, 500]
TEXT message d’alerte "gb.Text is deprecated" gb.Text est obsolète et remplacé par gb.IgnoreCase.
gb.Text
gb.IgnoreCase

*Cette incompatibilité n'est pas automatiquement gérée par l'assistant d'importation de l'IDE.