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 :

Encodage d'un Rtti.TValue


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Encodage d'un Rtti.TValue
    Bonjour,

    je travaille sur les glissers/collers et je récupère le contenu du Clipboard en FireMonkey XE7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Panel1DragOver(Sender: TObject; const Data: TDragObject;
      const Point: TPointF; var Operation: TDragOperation);
    begin
      Showmessage(IntToStr(length(data.Data.ToString))); //ou Data.Data.DataSize
      if not(Data.Data.IsEmpty) then
        Operation := TDragOperation.Copy;
    end;
    En Windows, je rencontre un problème lorsque la source du glisser/copier est une sélection dans Notepad++. Enfin, c'est avec lui que j'ai mis ce problème en évidence.

    Si le document source (la sélection) est encodée en UTF8 (avec ou sans BOM), tout fonctionne bien.
    Si le document est encodé en ANSI, Data.Data.IsEmpty est vrai alors que length(data.Data.ToString) ou data.Data.DataSize n'est pas nulle. Si j'enlève la condition, je vois apparaître dans mon Label : (empty).

    Je suppose qu'il s'agit d'un problème d'encodage.

    L'idéal serait de détecter l'encodage de data.data (RTTI.Tvalue)... Ensuite est-il changeable et affectable... Cela suppose de modifier le contenu du Clipboard (d'affecter un nouvel encodage à la chaîne qu'il contient). J'ai l'impression de refaire du Lazarus.... C'est l'objet de ma question.

    Pour parer à tout problème, j'ai affecté à mon TPanel un TPopupMenu Copier/Coller. Si je copie le texte ANSI dans le ClipBoard et le colle ensuite dans le Label, cela fonctionne correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.mnPasteClick(Sender: TObject);
    var
      Clipboard: IFMXClipboardService;
    begin
      if TPlatformServices.Current.SupportsPlatformService(IFMXClipboardService,
    IInterface(Clipboard)) then
      Label1.Text := Clipboard.GetClipboard.ToString;
    end;
    ...et ce programme (glisser/coller) écrit initialement en Qt ne pose pas ce problème en Windows avec NotePad++.
    Dernière modification par Invité ; 11/06/2015 à 16h31.

Discussions similaires

  1. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 11h17
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 01h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 16h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 11h16

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