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 :

Transcription entre TabControl et XML [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Transcription entre TabControl et XML
    Bonjour.
    Je voudrais passer le nom d'un onglet d'un tabControl dans un élément XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Folio.FolioActif:= TabControl1.Tabs.Text; // (FolioActif de type String)
    .....
    ele:= doc.CreateElement(FolioActif);
     racine.AppendChild(ele);
    Mais ça ne marche pas pour un problème de compatibilité de type. Il me faut un type DOMstring. Je ne trouve pas comment faire la transcription.

    Merci de votre aide

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    DOMstring semble être une chaîne Unicode 16bits ; essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Folio.FolioActif := UTF8ToUTF16(TabControl1.Tabs.Text);
    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
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé, même résultat
    avec comme message: le projet a levé une classe d'exeption 'EDOMEError'....
    Images attachées Images attachées  

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    si tu utilises l'unité dom.pas de Lazarus, la déclaration y est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DOMString = WideString;
    et donc, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Folio.FolioActif := UTF8Decode(TabControl1.Tabs.Text);
    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
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé, le pb est toujours le même.
    Quand j'utilise une simple variable de type String avec une valeur quelconque, ça marche. Le pb est dès que j'utilise TabControl1.Tabs.Text qui lui est du type TString.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Folio.FolioActif := UTF8Decode(UTF8Encode(TabControl1.Tabs.Text)); // en déclarant FolioActif de type WideString ou DOMString
    Si TabControl1.Tabs.Text est de type AnsiString, il sera passé en UTF8 puis Unicode

    Sinon, que donne le passage par une variable intermédiaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S:=TabControl1.Tabs.Text; // même si le TStrings.Text est déjà de type string
    Folio.FolioActif:=S;
    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 !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Dans tous les cas j'ai la même erreur.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Merci de poster plus de code, avec les déclarations des variables, notamment.

    Quel OS et quelle version de Lazarus utilises-tu ?
    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 !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Version 1.0 RC1 (32) mais même pb avec version précédente
    Voici plus de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Unit Dessin;
     
    TDessin = class
      private
    	FFolioActif: WideString;  
     
    Public
    property FolioActif: WideString read FFolioActif write FFolioActif; 
     
     
    Constructor TDessin.Create;
    begin
      Doc:= TXMLDocument.Create;
      racine:= Doc.CreateElement('PLAN');
      Doc.AppendChild(Racine);
    end;     
     
     
    procedure TDessin.EcireFolioXML;
    Begin
      ele:= doc.CreateElement(FolioActif);
      racine.AppendChild(ele);
      ele.SetAttribute('Objet',TypeObjet);
    end; 
     
    { ---------------------------------------------- }
     
    unit Unit1; 
    uses
     Dessin;
     
    var
      Form1: TForm1;
      Folio: TDessin;   
     
    procedure TForm1.MenuAjouteFolioClick(Sender: TObject);
    Var
       NomTab: String;   
    begin
      NomTab:= InputBox('Nouveau Folio','Nom du folio','SansNom');
      TabControl1.Tabs.Add(NomTab);
      Folio.FolioActi= TabControl1.Tabs.Text;
     end;

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    C'est amusant, et je ne comprends pas l'erreur : TTabControl.Tabs.Text est pourtant de type string, comme TTabControl.Tabs[i]...
    Le code suivant fonctionne sous CodeTyphon 2.80 Lazarus 32 bits sous Seven 64 bits
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      i:=TabControl1.Tabs.Add(NomTab);
      FolioActif:=TabControl1.Tabs[i];
    Accessoirement, utiliser la propriété Tabs.Text revient à créer chaque nouveau folio avec pour nom l'ensemble de ceux présents dans les onglets, séparés par un sLineBreak au lieu du nom de l'onglet ajouté...
    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 !

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Responsable maintenance
    Inscrit en
    Mai 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable maintenance

    Informations forums :
    Inscription : Mai 2012
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En faisant la modification proposée le problème est résolu.
    Le pb venait donc de ".Text".
    merci bien, je vais pouvoir continuer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 15h21
  2. liaison entre 2 fichier xml
    Par bobby51 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 15/05/2008, 09h20
  3. [CS3] Lien entre Spry et XML
    Par franckysnow91 dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 28/03/2008, 16h38
  4. lister les différences entre 2 fichiers XML
    Par st20085 dans le forum Général Python
    Réponses: 1
    Dernier message: 14/12/2007, 11h48
  5. [SAX] Comment récupérer un String entre deux balise xml?
    Par L4BiN dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 23/06/2006, 09h02

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