Documentation de Gambas - /doc/gb2togb3

/doc/gb2togb3
Le page anglaise est plus récente.

# 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.