GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 19 déc. 2006 à 19:49
Hello,
Merci :)
Mais je te rassures, j'ai développé ce langage pour en faire quelquechose de pratique et pour combler certaines lacunes que je trouvais dans VB et d'autres langages que j'aime bien :)
Il existe depuis 2001 et va feter ses 6 ans l'annee prochaine :)
khazee
Messages postés9Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention19 décembre 2006 19 déc. 2006 à 08:38
Merci pour ta réponse... Ce langage a (pour une fois) l'air utile.
J'y jetterai un oeil plus attentif dès que j'en aurai le temps.
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 18 déc. 2006 à 20:47
Bonjour,
FBSL est un langage VB like orienté objet que je developpe depuis 2001.
Le site de FBSL se trouve ici : http://www.fbsl.net
Enjoy :)
khazee
Messages postés9Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention19 décembre 2006 18 déc. 2006 à 08:32
Merci pour ta remarque et excuse moi de mon ignorance :
C'est quoi le FBSL ?
Merci
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 18 déc. 2006 à 00:43
Pour les curieux... voici la version en FBSL :
#Option Explicit
#Apptype Console
Dim e As New SIMPLEXML
e.NewFile( Curdir() & "\Test.xml", "myXML" )
e.AddElement( "Version", True, False, "" )
e.AddElement( "Version", True, False, "" )
e.WriteValue( "Version", "HEADER", "01.001.b", 1 )
? e.ReadValue("Version", "HEADER")
Delete e
? "Have a look at ", Curdir() & "\Test.xml"
Pause
Class SIMPLEXML
Private:
Begin Const
WV_ENTRY_NOT_POSSIBLE = 2
WV_ELEMENT_NOT_EXIST = 1
WV_VALUE_WRITTEN = 0
RV_ELEMENT_NOT_EXIST = "0"
DOM = "MSXML2.DOMDocument"
End Const
Type TYPE_ELEMENT
$TE_Name * 64
$TE_ParentName * 64
$TE_Valeur * 1
End Type
Dim $XML_FilePath, $XML_ProjectTitle, %XML_CreateHeader, %XML_CreateBody, %NbElement
Dim TE As TYPE_ELEMENT, TabElement[1] 'As TYPE_ELEMENT
Shared XML_File 'As MSXML2.DOMDocument
Method Initialize()
If XML_File <> 0 Then ReleaseObject( XML_File )
End Method
Method Terminate()
If XML_File <> 0 Then ReleaseObject( XML_File )
End Method
Method ReDimArray()
ReDim Preserve TabElement[NbElement]
End Method
Public:
Method NewFile($FilePath, $ProjectTitle, %CreateHeader=True, %CreateBody=True)
' Déclaration des variables locales
Static xFile, xHeader, xBody
'On crée un nouveau doc
Set XML_File = CreateObject(DOM)
'
Set xFile = GetValue( "%o", XML_File, ".createElement(%s)", ProjectTitle)
CallMethod( XML_File, ".appendChild %o", xFile )
'Création d'une balise Header si sélectionné (par défaut oui)
If CreateHeader = True Then
'<HEADER>
Set xHeader = GetValue( "%o", XML_File, ".createElement(%s)", "HEADER")
CallMethod( xFile, ".appendChild %o", xHeader )
ReleaseObject( xHeader )
'enregistrement de l'élement
ReDimArray()
TE.TE_Name = "HEADER"
TE.TE_ParentName = ProjectTitle
TabElement[NbElement] = TE
Incr(NbElement)
End If
'Création d'une balise Body si sélectionné (par défaut oui)
If CreateBody = True Then
'
Set xBody = GetValue( "%o", XML_File, ".createElement(%s)", "BODY" )
CallMethod( xFile, ".appendChild %o", xBody )
ReleaseObject( xBody )
' enregistrement de l'élément
ReDimArray()
TE.TE_Name = "BODY"
TE.TE_ParentName = ProjectTitle
TabElement[NbElement] = TE
Incr(NbElement)
End If
' Création du document
PutValue( XML_File, ".documentElement = %o", xFile )
' On sauvegarde le fichier XML
CallMethod( XML_File, ".save %s", FilePath )
' on décharge en mémoire le document
ReleaseObject( xFile )
ReleaseObject( XML_File )
' On sauvegarde, pour plus de commodité pour l'utilisateur de la classe, les paramètres
XML_FilePath = FilePath
XML_ProjectTitle = ProjectTitle
XML_CreateHeader = CreateHeader
XML_CreateBody = CreateBody
End Method
Method AddElement($AE_NewElementName, %AE_HeaderAppendChild, %AE_BodyAppendChild, $AE_ParentName)
' Déclaration des variables locales
Static xTemp, $AppendParentName
'On crée un nouveau doc
Set XML_File = CreateObject(DOM)
'Rend la lecture et écriture asynchrone
PutValue( XML_File, ".async = %b", True )
'Charge le fichier dans le document xml
CallMethod( XML_File, ".Load(%s)", XML_FilePath )
'Définition du parent
If AE_HeaderAppendChild = True Then
AppendParentName = "HEADER"
ElseIf AE_BodyAppendChild = True Then
AppendParentName = "BODY"
Else
AppendParentName = AE_ParentName
End If
' Création de l'élément, affectation d'une valeur nulle
Set xTemp = GetValue( "%o", XML_File, ".createElement(%s)", AE_NewElementName )
PutValue( xTemp, ".Text = %s", "0" )
CallMethod( XML_File, ".getElementsByTagName(%s).Item(%d).appendChild %o", AppendParentName, 0, xTemp )
ReleaseObject( xTemp )
' enregistrement de l'élément
ReDimArray()
TE.TE_Name = AE_NewElementName
TE.TE_ParentName = AppendParentName
TE.TE_Valeur = "0"
TabElement[NbElement] = TE
Incr(NbElement)
'Sauvegarde des données modifiées
CallMethod( XML_File, ".save(%s)", XML_FilePath )
' on décharge en mémoire le document
ReleaseObject( XML_File )
End Method
Method %WriteValue($WV_ElementName, $WV_ParentName, $WV_ElementValue, %WV_ElementPosition=0)
' Déclaration des variables locales
Static %i, %j, %ElementId, %ElementNb, %ElementFound, $sTemp
'On crée un nouveau doc
Set XML_File = CreateObject(DOM)
'Rend la lecture et écriture asynchrone
PutValue( XML_File, ".async = %b", True )
'Charge le fichier dans le document xml
CallMethod( XML_File, ".Load(%s)", XML_FilePath )
'initialisation de la recherche
j = 0
ElementFound = False
' On cherche la position de l'élément
For i = 0 To NbElement - 1
StrCpy(sTemp, TabElement[i].TE_Name)
If sTemp = WV_ElementName Then
StrCpy(sTemp, TabElement[i].TE_ParentName)
If sTemp = WV_ParentName Then
If WV_ElementPosition <> 0 Then
If (WV_ElementPosition - 1) = j Then
ElementId = j
ElementNb = i
ElementFound = True
Exit For
End If
Else
ElementId = j
ElementNb = i
ElementFound = True
Exit For
End If
End If
Incr(j)
End If
Next
'Si l'élément n'a pas été trouvé
If ElementFound = False Then
Return WV_ELEMENT_NOT_EXIST
End If
'Ecriture de la nouvelle valeur
'On Error GoTo WriteValueFailed
PutValue( XML_File, ".getElementsByTagName(%s).Item(%d).firstChild.Text = %s", WV_ElementName, ElementId, WV_ElementValue )
' enregistrement de l'élément
TE.TE_Valeur = WV_ElementValue
TabElement[ElementNb] = TE
'Sauvegarde des données modifiées
CallMethod( XML_File, ".save %s", XML_FilePath )
' on décharge en mémoire le document
ReleaseObject( XML_File )
' On indique que tout s'est bien passé
Return WV_VALUE_WRITTEN
End Method
Method $ReadValue($RV_ElementName, $RV_ParentName, %RV_ElementPosition=0)
' Déclaration des variables locales
Static %i, %j, %ElementId, %ElementFound, $szValue, $sTemp
'On crée un nouveau doc
Set XML_File = CreateObject(DOM)
'Rend la lecture et écriture asynchrone
PutValue( XML_File, ".async = %b", True )
'Charge le fichier dans le document xml
CallMethod( XML_File, ".Load(%s)", XML_FilePath )
'initialisation de la recherche
j 0: ElementFound False
' On cherche la position de l'élément
For i = 0 To NbElement - 1
StrCpy(sTemp, TabElement[i].TE_Name)
If sTemp = RV_ElementName Then
StrCpy(sTemp, TabElement[i].TE_ParentName)
If sTemp = RV_ParentName Then
If RV_ElementPosition <> 0 Then
If RV_ElementPosition - 1 = j Then
ElementId = j
ElementFound = True
Exit For
End If
Else
ElementId = j
ElementFound = True
Exit For
End If
End If
Incr(j)
End If
Next
'Si l'élément n'a pas été trouvé
If ElementFound = False Then
Return RV_ELEMENT_NOT_EXIST
End If
'Lecture de la valeur
szValue = GetValue( "%s", XML_File, ".getElementsByTagName(%s).Item(%d).firstChild.Text", RV_ElementName, ElementId )
'on décharge en mémoire le document
ReleaseObject( XML_File )
Return szValue
End Method
End Class
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 18 déc. 2006 à 00:42
Merci pour la classe :)
Cependant j'ai relevé des fuites mémoires, comme notemment tout ce qui est Set xTemp = XMLFILE.xxx
Si tu ne fais pas de Set xTemp = Nothing ça fuit !!
Sinon j'ai porté ton code en FBSL, le resultat est bon :)
@++
http://www.fbsl.net
khazee
Messages postés9Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention19 décembre 2006 31 janv. 2005 à 09:10
Salut fg,
alors... de rien.
Je trouve ton site plutôt pas mal. J'aimerais sincèrement que le miens soit pareil.
:-)
@+
fg85
Messages postés370Date d'inscriptiondimanche 28 mars 2004StatutMembreDernière intervention13 avril 2007 28 janv. 2005 à 23:13
19 déc. 2006 à 19:49
Merci :)
Mais je te rassures, j'ai développé ce langage pour en faire quelquechose de pratique et pour combler certaines lacunes que je trouvais dans VB et d'autres langages que j'aime bien :)
Il existe depuis 2001 et va feter ses 6 ans l'annee prochaine :)
Gerome GUILLEMIN
http://www.fbsl.net
19 déc. 2006 à 08:38
J'y jetterai un oeil plus attentif dès que j'en aurai le temps.
18 déc. 2006 à 20:47
FBSL est un langage VB like orienté objet que je developpe depuis 2001.
Le site de FBSL se trouve ici : http://www.fbsl.net
Enjoy :)
18 déc. 2006 à 08:32
C'est quoi le FBSL ?
Merci
18 déc. 2006 à 00:43
http://www.fbsl.net
18 déc. 2006 à 00:42
Cependant j'ai relevé des fuites mémoires, comme notemment tout ce qui est Set xTemp = XMLFILE.xxx
Si tu ne fais pas de Set xTemp = Nothing ça fuit !!
Sinon j'ai porté ton code en FBSL, le resultat est bon :)
@++
http://www.fbsl.net
31 janv. 2005 à 09:10
alors... de rien.
Je trouve ton site plutôt pas mal. J'aimerais sincèrement que le miens soit pareil.
:-)
@+
28 janv. 2005 à 23:13
-------------------------
http://fg.logiciel.free.fr