IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

[laz4android] Erreur de syntaxe avec case of string


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 335
    Par défaut [laz4android] Erreur de syntaxe avec case of string
    Bonjour à tous

    j'utilise Laz4Android pour faire une petite application.
    j'ai un jmenu.
    J'utilise case of avec TAndroidModule1.AndroidModule1ClickOptionMenuItem

    Si j'utilise itemId pas de souci
    si j'utilise itemCaption créer plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      case itemCaption of
          'Save':

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Effectivement, en Pascal, pas de case sur des chaînes.
    A émuler par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i := CaptionList.Indexof(itemCaption);
    case i of
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    Citation Envoyé par tourlourou Voir le message
    Effectivement, en Pascal, pas de case sur des chaînes.
    C'est bizarre ce que tu dis . Ce code fonctionne chez moi en free pascal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var s : String;
    begin
      s := 'titi';
      case s of
       'toto' : writeln('toto');
       'titi' : writeln('titi');
      end;
      readln;
    end.
    Ami calmant, J.P

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 937
    Billets dans le blog
    6
    Par défaut
    C'est moi qui doit dater du jurassique, alors
    Je me suis fié à mon expérience surtout Delphi : si FPC a intégré le case string, c'est bien
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre éclairé
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 335
    Par défaut
    Ne fonctionne toujous pas avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TBlocnote.BlocnoteClickOptionMenuItem(Sender: TObject;
      jObjMenuItem: jObject; itemID: integer; itemCaption: string; checked: boolean
      ); 
    var
    s:string;
    begin
        s:=itemCaption;
       case s of
            'Save':  textview1.Text:='save';
    end;
    end;

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Tu peux essayer ceci aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    uses strUtils;
    var  s : String;
    begin
      s := 'titi';
      case IndexStr(s,['toto','titi']) of
       0 : writeln('toto');
       1 : writeln('titi');
      end;
      readln;
    end.

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Ne fonctionne toujours pas...
    Pas la première fois que je te dis que des infos comme "ne fonctionne pas" ou "plante" ne sont pas des messages d'erreur valides...

    Et sinon, quand on a ce genre d'embrouille, la première chose à faire est de vérifier les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TBlocnote.BlocnoteClickOptionMenuItem(Sender: TObject;
      jObjMenuItem: jObject; itemID: integer; itemCaption: string; checked: boolean
      ); 
    var
      s: string;
    begin
      s:=itemCaption;
      ShowMessage(s); // <</!\ <</!\ <</!\ et tu nous dis ce que ça affiche
      case s of
        'Save':  textview1.Text:='save';
      end;
    end;

    Je profite du post pour squatter :
    pour ce sujet (https://www.developpez.net/forums/d2.../#post12027267), tu en es où ?

    MP pour Yves : oui oui ça fonctionne, même sous Linux !

  8. #8
    Membre éclairé
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 335
    Par défaut
    Voici le message que j'ai lorsque je fais 'Créer'

    Nom : Capture d'écran 2024-10-26 202411.png
Affichages : 176
Taille : 60,5 Ko

  9. #9
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Voici le message que j'ai lorsque je fais 'Créer'
    Admettons, mais c'est où que tu fais "Créer ? Dans quel bout de code ? On ne le voit pas dans ce que tu postes...


    Je t'avais demandé un "ShowMessage(s)", il est où son résultat ?


    Et pour l'autre sujet, tu en es où ?

  10. #10
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Je t'avais demandé un "ShowMessage(s)", il est où son résultat ?
    Comment veux-tu si l'app ne démarre pas


    Relisez plus attentivement la réponse de tourlourou :

    Citation Envoyé par tourlourou Voir le message
    Je me suis fié à mon expérience surtout Delphi : si FPC a intégré le case string, c'est bien
    Delphi attend une valeur ordinale {$mode delphi} alors qu'une chaîne est acceptée par Free Pascal {$mode objfpc}.

  11. #11
    Membre éclairé
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 335
    Par défaut
    J'ai précisé au début que j'utilise laz4android.
    Je ne peux pas avoir de résultat avec showmessage puisque l'application n'est pas créée et donc je ne peux pas lancer l'apk.
    Avec laz4android je vais dans le menu 'Exécuter' et 'Créer' et normalement si tous va bien je lance '[LAMW] build Android APK et Run'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i := CaptionList.Indexof(itemCaption);
    case i of
    ce code revient à utiliser itemid.

    Je voulais utiliser itemCaption pour avoir un code source plus compréhensible avec case of 'new' 'save' open', mais bon je vais utiliser itemID, case of 1, 2, 3...

  12. #12
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Citation Envoyé par sematimo Voir le message
    Je voulais utiliser itemCaption pour avoir un code source plus compréhensible avec case of 'new' 'save' open'
    Plus compréhensible mais moins évolutif puisque limité à l'anglais.

    Citation Envoyé par sematimo Voir le message
    je vais utiliser itemID, case of 1, 2, 3...
    Préférable, quitte à déclarer des constantes pour plus de clarté : NewID=1, SaveID=2.

  13. #13
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    case of string works only in mode objfpc.
    Tu as un mode Delphi dans ton code ? Dans le forum mettre toujours le code en entier quand c'est possible car on peut passer à côté de quelque chose si on ne voit pas tout.
    Ma solution du message #6 ne fonctionne pas ?

    Ami calmant, J.P

  14. #14
    Membre éclairé
    Avatar de sematimo
    Profil pro
    Inscrit en
    Février 2009
    Messages
    335
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 335
    Par défaut
    en utilisant itemid , l'apk est créer, au run showmessage affiche bien le texte sélectionné dans le menu

    je suis bien en delphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    unit unit1;
     
    {$mode delphi}
     
    interface
     
    uses
      {$IFDEF UNIX}{$IFDEF UseCThreads}
      cthreads,
      {$ENDIF}{$ENDIF}
      Classes, SysUtils, AndroidWidget, Laz_And_Controls, intentmanager, And_jni,
      menu;
     
    type

Discussions similaires

  1. [PHP 4] Erreur de syntaxe avec Implode
    Par jmtrivia dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2009, 18h43
  2. Gestionnaire d'interruptions : erreur de syntaxe avec l'opcode call
    Par Link/DD dans le forum Programmation d'OS
    Réponses: 7
    Dernier message: 23/01/2008, 17h00
  3. [POO] Erreur de syntaxe avec une classe
    Par sirbaldur dans le forum Langage
    Réponses: 5
    Dernier message: 10/01/2007, 13h30
  4. [Conception] Erreur de syntaxe avec un champ de tableau
    Par lodan dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/09/2006, 11h45
  5. Erreur de syntaxe avec UPDATE
    Par tyarak dans le forum Requêtes
    Réponses: 3
    Dernier message: 01/02/2006, 01h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo