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

Composants FMX Delphi Discussion :

[Android BlueTooth] Comment détecter un CR fantome?


Sujet :

Composants FMX Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 010
    Points : 6 300
    Points
    6 300
    Par défaut [Android BlueTooth] Comment détecter un CR fantome?
    Bonjour à tous les Delphistes!

    Imaginez une app Android développée avec Delphi Rio qui est connectée à un appareil externe BlueTooth (tests effectués avec lecteur code barre et avec clavier).

    Quand un Carriage Return (CR) est envoyé, l'app déclenche un event "FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
    Shift: TShiftState);" Donc le CR est détecté!

    Si j'utilise un éditeur de texte Android, le CR est pris en compte.

    Mais impossible d'identifier le caractère CR dans l'event Delphi "FormKeyDown": un "Ord(KeyChar)" qui devrait donner un #13 (et qui donne #13 si on compile pour windows) donne 0, un "LEncoding.GetBytes(KeyChar)" donne aussi 0;

    Idem pour les touches clavier Backspace, Enter, Ctrl, Alt, Shift, Caps, F1...F12, Insert, Home, PgUp, Delete, End, PgDn, ..... qui donnent toutes '0'!

    Dès lors, une question se pose... Comment identifier l'arrivée d'un CR ou autre caractère non alphanumérique?

  2. #2
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 614
    Points
    3 614
    Par défaut
    Sur Android dans certains cas on a une différence entre KeyDown et KeyUp : certaines touches ne sont repérées que dans le second.
    (ce problème se pose aussi avec les télécommandes pour Android TV, il faut passer par une API non gérée en standard par FMX pour des appareils externes car les fonctions dans FMX prennent en charge uniquement le clavier virtuel pour le moment)

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 010
    Points : 6 300
    Points
    6 300
    Par défaut
    Citation Envoyé par pprem Voir le message
    Sur Android dans certains cas on a une différence entre KeyDown et KeyUp : certaines touches ne sont repérées que dans le second.
    (ce problème se pose aussi avec les télécommandes pour Android TV, il faut passer par une API non gérée en standard par FMX pour des appareils externes car les fonctions dans FMX prennent en charge uniquement le clavier virtuel pour le moment)

    1. Sur un clavier virtuel Android, la touche ENTER est présente!

    2. Si je mets le focus sur un composant Memo et configure le lecteur code barre pour que l'envoi du code barre via Bluetooth se termine par un CR, le CR est pris en compte dans le Memo, il y a un retour à la ligne à chaque lecture de code barre!!!

    Alors comment le composant Memo FMX peut réagir à un CR qui selon toi n'est pas traité par Delphi FMX???

    Comment le Memo peut détecter un CR que l'on ne peut pas identifier via le code?

    Quand à la différence de traitement entre KeyDown et KeyUp, elle existe. Avec le même code et la même configuration de douchette, KewDown récupère le bon code barre alors que KeyUp récupère du chinois (une série de caractères exotiques du style "ç)@¢%"): On peut donc conclure que KeyDown et KeyUp n'utilise pas le même character set!!!

  4. #4
    Membre émérite
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Points : 2 529
    Points
    2 529
    Par défaut
    Bonjour,

    Pour info concernant le OnKeyDown et OnKeyUp event sur Android :

    http://blog.blong.com/2020/02/the-en...-event-on.html

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 010
    Points : 6 300
    Points
    6 300
    Par défaut
    Citation Envoyé par Thierry Laborde Voir le message
    Bonjour,

    Pour info concernant le OnKeyDown et OnKeyUp event sur Android :

    http://blog.blong.com/2020/02/the-en...-event-on.html
    Merci pour l'info mais ton lien parle d'un problème consistant en le non-déclenchement des events onKeydown et onKeyUp à la réception d'un ENTER.

    Avec Delphi Rio et tous les patchs installés, ENTER déclenche les events onKeydown et onKeyUp!

    Le problème est qu'il met impossible de reconnaître la présence du ENTER à l'aide du code: Le code ASCII retourné pour ENTER et la liste de touches donnée plus haut est égal à la valeur 0!!!

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/07/2019, 13h01
  2. Réponses: 0
    Dernier message: 06/11/2016, 14h39
  3. [Bluetooth] Comment détecter et filtrer uniquement les terminaux
    Par abeele123 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 05/09/2012, 20h00
  4. Réponses: 0
    Dernier message: 24/06/2008, 17h12
  5. Réponses: 9
    Dernier message: 01/10/2003, 19h43

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