PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 10:24

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Dialog XML en DataSection
MessagePosté: Jeu 19/Juil/2018 11:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
J'ai lu quelques part sur ce forum qu'il n'était pas facile de mettre un fichier de dialogue XML dans la DataSection.

J'ai fait un petit test avec ce fichier que j'ai nommé ui0.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<dialogs>
  <window name="window_0" flags="#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered" width="800" height="600" text="My application" id="#mf"/>
</dialogs>
Ce fichier est saisie avec NotePad ++ au format UTF-8

Il ouvre une fenêtre de taille 800x600 centrée. Je n'ai pas ajouté d'autre gadget pour ne pas surcharger ce test.

■ Mise en DataSection.
Code:
DataSection
  XMLDialog:
  IncludeBinary "ui0.xml"
  XMLDialog_EOF: 
EndDataSection

■ Lecture du fichier dans une variable string.
Code:
XML.s = PeekS(?XMLDialog, ?XMLDialog_EOF - ?XMLDialog, #PB_UTF8)

La suite du code est classique est fait référence à la bibliothéque Dialog
:arrow: https://www.purebasic.com/french/docume ... index.html

■ Le code exemple.
Code:
#XML = 0
#Dialog = 0

Runtime Enumeration Window
  #mf 
EndEnumeration


;Plan de l'application
Declare Start()
Declare Exit()

Start()

Procedure Start()
  ;Lecture du fichier XML en DataSection.
  ;Pour cette démo mon fichier XML (ui0.xml) est au format UTF-8
  Protected XML.s = PeekS(?XMLDialog, ?XMLDialog_EOF - ?XMLDialog, #PB_UTF8) ;ou #PB_ASCII si fichier au format ASCII
 
  ;Chargement de l'interface de dialogue
  If CatchXML(#Xml, @XML, StringByteLength(XML), 0, #PB_UTF8) And XMLStatus(#Xml) = #PB_XML_Success
   
    ;Créer l'interface utilisateur
    CreateDialog(#Dialog)
   
    ;Ouvrir la fenetre nommée : "window_0"
    If OpenXMLDialog(#Dialog, #Xml, "window_0")   
     
      ;Déclencheurs evenementiels
      BindEvent(#PB_Event_CloseWindow, @Exit())
     
      Repeat : WaitWindowEvent() : ForEver
    Else
      Debug "Dialog creation erreur: " + DialogError(#Dialog)
    EndIf
   
  Else
    Debug "Erreur lié à l'encodage du fichier UTF-8 avec BOM ou ASCII"
    Debug "XML erreur à la ligne" + XMLErrorLine(#Xml) + ": " + XMLError(#Xml)
  EndIf 
EndProcedure

Procedure Exit() 
  End
EndProcedure

DataSection
  XMLDialog:
  IncludeBinary "ui0.xml"
  XMLDialog_EOF: 
EndDataSection

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Dernière édition par falsam le Jeu 19/Juil/2018 13:39, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Dialog XML en DataSection
MessagePosté: Jeu 19/Juil/2018 12:58 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6644
Localisation: Isere
Ca marche nickel merci 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Dialog XML en DataSection
MessagePosté: Ven 20/Juil/2018 9:58 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1646
Localisation: Belgique
Merci falsam pour cet exemple

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Dialog XML en DataSection
MessagePosté: Ven 20/Juil/2018 13:26 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2159
Localisation: 50200 Coutances
Merci falsam pour cet exemple, je l'ai modifié en y mettant mes propres constantes et ça fonctionne très bien.

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye