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

VB.NET Discussion :

Variable Class et tableaux [Débutant]


Sujet :

VB.NET

  1. #21
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    L'exception System.InvalidCastException n'a pas été gérée
    Message="InvalidCastException"
    StackTrace:
    at SewerTest.Start.MaStructureTest.get_ListePressionXml()
    at SewerTest.Start.Button2_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnClick(EventArgs e)
    at System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
    at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
    at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
    at System.Windows.Forms.Application.Run(Form fm)
    at SewerTest.Start.Main()
    InnerException:
    ça bloque ici exactement semblerai-t-il

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Return String.Join(";", ListePression.Select(Function(d) d.ToString(CultureInfo.InvariantCulture)))
    pile des appels : > SewerTest.exe!SewerTest.Start.MaStructureTest.get_ListePressionXml() Ligne 55 + 0x1c octets Basic

  2. #22
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    OK, j'ai compris... tu es en .NET 3.5, c'est ça ? Moi j'avais testé en .NET 4. Et en .NET 4, il y a une surcharge de String.Join qui prend en paramètre un IEnumerable, plutôt qu'un tableau, donc ça marchait.

    C'est pour ce genre de truc que VB.NET est un langage de m**de... En C# ça aurait donné une erreur à la compilation, ce qui aurait permis de trouver tout de suite l'origine du problème. Mais VB se croit malin et se dit "c'est bon, on verra bien à l'exécution si ça passe"... et en fait ça passe pas
    (pour limiter un peu les effets de ce genre, je te recommande vivement d'activer Option Strict On dans ton projet)

    (bref, fin du coup de gueule )

    Pour que ça passe, ajoute ToArray() à la fin du Select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Return String.Join(";", ListePression.Select(Function(d) d.ToString(CultureInfo.InvariantCulture)).ToArray())

  3. #23
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    rien a dire sauf MERCI !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ListePression>0.55;0.45;0.55;0.45;0.65;0.75</ListePression>
    je vois l'interet d'evoluer dans les versions, le soucis c'est qu'on m'impose un CF 3.5 sur ce produit embarqué ! pour info, je suis ingénieur electronicien ^^ chacun son domaine mais j'aime le côté pluridisciplinaire ! je debute, j'ai beaucoup à apprendre ;p

    je vais vérifier si tout se charge bien apres un enregistrement xml mais il n'y a aucune raison ^^



    ps: petit conseil, pour développer l'impression de mes projet, je développerai une application "bureau" dans le meme language, mais sous framework (pas compact) lequel est le plus courant actuellement sur les post clients ?

    Je developpai en delphi, en utilisant GmPrintSuite de MurtSoft pour la partie canvas d'impression. j'ai beaucoup entendu parlé de crystalrepport, est ce accessible ou réservé aux vrai codeurs ?

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    ralala probleme maintenant a la deserialisation du xml !
    la lecture get fonctionne, set aussi mais au travers du xml plantage ^^


    ça plante ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     fichier = CType(serializer.Deserialize(fs), MaStructure)
    L'exception System.InvalidOperationException n'a pas été gérée
    Message="There is an error in XML document (0, 0)."
    StackTrace:
    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) at SewerTest.Start.Start_KeyDown(Object sender, KeyEventArgs e) at System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e) at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) at System.Windows.Forms.Application.Run(Form fm) at SewerTest.Start.Main()
    InnerException: System.Xml.XmlException
    LineNumber=0
    LinePosition=0
    Message="Root element is missing."
    SourceUri=""
    StackTrace:
    at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(Int32 res) at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Xml.XmlTextReaderImpl.Read() at System.Xml.XmlTextReader.Read() at System.Xml.XmlReader.MoveToContent() at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) at SewerTest.Start.Start_KeyDown(Object sender, KeyEventArgs e) at System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e) at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) at System.Windows.Forms.Application.Run(Form fm) at SewerTest.Start.Main()
    InnerException:

  5. #25
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par altahir007 Voir le message
    ps: petit conseil, pour développer l'impression de mes projet, je développerai une application "bureau" dans le meme language,
    Dans le même langage ? Tu ferais mieux de le faire en C#
    Surtout si tu as fait du Delphi (C# a été conçu par le créateur de Delphi, Anders Hejlsberg)

    Citation Envoyé par altahir007 Voir le message
    mais sous framework (pas compact) lequel est le plus courant actuellement sur les post clients ?
    Je sais pas trop... Windows XP n'a aucun framework installé de base, mais je crois que le 2.0 est inclus dans le SP2 (pas sûr). Windows Vista est fourni avec le 3.0, et Windows Seven avec le 3.5 (encore pas sûr).

    Après, vu qu'il y a de plus en plus d'applications qui requièrent .NET, je pense que la plupart des gens ont une version plus récente que celle fournie avec Windows. Et puis c'est dommage de se limiter à une vieille version, c'est quand même pas hyper contraignant pour l'utilisateur de devoir installer .NET, à l'époque de l'ADSL et de la fibre optique...

    Citation Envoyé par altahir007 Voir le message
    j'ai beaucoup entendu parlé de crystalrepport, est ce accessible ou réservé aux vrai codeurs ?
    Euh, c'est quoi un "vrai codeur" ?
    C'est pas réservé à qui que ce soit... Mais perso j'ai jamais utilisé ça, j'en ai pas eu besoin.

    Citation Envoyé par altahir007 Voir le message
    ralala probleme maintenant a la deserialisation du xml !
    la lecture get fonctionne, set aussi mais au travers du xml plantage ^^


    ça plante ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     fichier = CType(serializer.Deserialize(fs), MaStructure)
    L'exception System.InvalidOperationException n'a pas été gérée
    Message="There is an error in XML document (0, 0)."
    Tu as regardé la tête de ton fichier XML ? Je parie qu'il est vide

  6. #26
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    bon ok pour le .net on va prendre la dernière en même temps ce n'est pas une application grand public que je developpe ^^

    bon pour l'impression je vais chercher un peu, j'ai des partenaires suisses avec qui je travail ils utilisent ce crystal repport et vu l'entendu de leur clientelle dans le monde, je pense qu'ils ont réfléchi leur choix !

    merci pour le C# je vais alors essayer de bosser la version bureau sous C# ça me permetra de voir un autre language !

    Pour la partie xml, il est plein ! aucun soucis, j'ai vérifié avant d'ecrire ^^ voir post un plus haut, on a bien les valeurs pression avec les ";" j'ai un peu épuré mais voila, j'ai renommé le tableaux de pression et il y a bien des valeurs dedans tab_pressurisation

    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <MaStructure xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Monprojet>
        <numeroprojet>demo</numeroprojet>
        <client>lll</client>
      </Monprojet>
      <Mestest>
        <MaStructureTest>
          <testdate>01-01-2006</testdate>
          <testtime>19:15:33</testtime>
          <tab_pressurisation>0.222</tab_pressurisation>
        </MaStructureTest>
      </Mestest>
    </MaStructure>

  7. #27
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu es sûr que le fichier que tu lis correspond bien à celui que tu écris ? Parce que vu le message d'erreur ("Root element is missing"), en général ça n'arrive que quand le fichier est vide...

  8. #28
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    j'ai pas copié la bonne erreur je pense !


    L'exception System.InvalidOperationException n'a pas été gérée
    Message="There is an error in XML document (36, 7)."
    StackTrace:
    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) at SewerTest.Start.Start_KeyDown(Object sender, KeyEventArgs e) at System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e) at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) at System.Windows.Forms.Application.Run(Form fm) at SewerTest.Start.Main()
    InnerException: System.FormatException
    Message="FormatException"
    StackTrace:
    at System.Double.Parse(String s, NumberStyles style, IFormatProvider provider) at System.Double.Parse(String s, IFormatProvider provider) at SewerTest.Start.MaStructureTest._Lambda$__10(String s) at System.Linq.Enumerable.<SelectIterator>d__d`2.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at SewerTest.Start.MaStructureTest.set_tab_depressurisationXml(String value) at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean verifyAccess, StackCrawlMark& stackMark) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index) at System.Xml.Serialization.SerializationHelper.SetValue(Object target, MemberInfo member, Object value) at System.Xml.Serialization.MemberFixup.AssignValue(Object target, Object value) at System.Xml.Serialization.AssigningFixup.fixup(Object target, Object value) at System.Xml.Serialization.XmlSerializationReader.RunFixup(Accessor accessor, Fixup fixup, Object fixupTarget, Object value) at System.Xml.Serialization.XmlSerializationReader.DeserializePrimitiveElement(LogicalType deserializeAs, Accessor accessor, Fixup fixup, Object fixupTarget, String identifier, Boolean emptyValue, Boolean nullValue) at System.Xml.Serialization.XmlSerializationReader.deserializeElement(Accessor accessor, Fixup fixup, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.DeserializeElementMember(MemberValueCollection members, Object fixupTarget, Hashtable internalState, Boolean& firstElement) at System.Xml.Serialization.XmlSerializationReader.deserializeMembers(MemberValueCollection members, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.DeserializeComplexElement(LogicalType deserializeAs, Accessor accessor, Fixup fixup, Object fixupTarget, String identifier, Boolean emptyValue, Boolean nullValue) at System.Xml.Serialization.XmlSerializationReader.deserializeElement(Accessor accessor, Fixup fixup, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.deserializeLiteralArray(Accessor accessor, LogicalType deserializeAs, Fixup fixup, Object fixupTarget, Boolean isNull) at System.Xml.Serialization.XmlSerializationReader.DeserializeArrayLikeElement(LogicalType deserializeAs, Accessor accessor, Fixup fixup, Object fixupTarget, String identifier, Boolean emptyValue, Boolean nullValue) at System.Xml.Serialization.XmlSerializationReader.deserializeElement(Accessor accessor, Fixup fixup, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.DeserializeElementMember(MemberValueCollection members, Object fixupTarget, Hashtable internalState, Boolean& firstElement) at System.Xml.Serialization.XmlSerializationReader.deserializeMembers(MemberValueCollection members, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.DeserializeComplexElement(LogicalType deserializeAs, Accessor accessor, Fixup fixup, Object fixupTarget, String identifier, Boolean emptyValue, Boolean nullValue) at System.Xml.Serialization.XmlSerializationReader.deserializeElement(Accessor accessor, Fixup fixup, Object fixupTarget) at System.Xml.Serialization.XmlSerializationReader.DeserializeElement(Accessor accessor, Fixup fixup) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) at SewerTest.Start.Start_KeyDown(Object sender, KeyEventArgs e) at System.Windows.Forms.Control.OnKeyDown(KeyEventArgs e) at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Form.WnProc(WM wm, Int32 wParam, Int32 lParam) at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam) at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain) at System.Windows.Forms.Application.Run(Form fm) at SewerTest.Start.Main()
    InnerException:

  9. #29
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ah ok, j'avais pas pensé au cas d'une chaine null ou vide...

    Essaie de modifier le Set de la propriété comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Set(ByVal value As String)
            If String.IsNullOrEmpty(value) Then
                ListePression = New List(Of String)()
            Else
                ListePression = value.Split(New Char() { ";"c }).Select(Function(s) Double.Parse(s, CultureInfo.InvariantCulture)).ToList()
            End If
        End Set

  10. #30
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    exactement, l'une des listes (car j'ai 5 liste de double) etait vide, comment t'es tu orienté dans le StackTrace ? j'ai juste du changer le type qui dans mon cas etait un double.

    Merci grâce à toi je peux sérialiser et désérialiser mes fichiers sans accros

    Citation Envoyé par tomlev Voir le message
    Ah ok, j'avais pas pensé au cas d'une chaine null ou vide...

    Essaie de modifier le Set de la propriété comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Set(ByVal value As String)
            If String.IsNullOrEmpty(value) Then
                ListePression = New List(Of Double)()
            Else
                ListePression = value.Split(New Char() { ";"c }).Select(Function(s) Double.Parse(s, CultureInfo.InvariantCulture)).ToList()
            End If
        End Set

  11. #31
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par altahir007 Voir le message
    comment t'es tu orienté dans le StackTrace ?
    C'est cette partie là qui indique le problème :

    InnerException: System.FormatException
    Message="FormatException"
    StackTrace:
    at System.Double.Parse(String s, NumberStyles style, IFormatProvider provider)
    at System.Double.Parse(String s, IFormatProvider provider)
    at SewerTest.Start.MaStructureTest._Lambda$__10(String s)
    at System.Linq.Enumerable.<SelectIterator>d__d`2.MoveNext()
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
    at SewerTest.Start.MaStructureTest.set_tab_depressurisationXml(String value)
    Vu que tes nombres avaient bien le bon format, la seule raison qui pouvait expliquer le problème était que Double.Parse reçoive une chaine vide.


    Citation Envoyé par altahir007 Voir le message
    j'ai juste du changer le type qui dans mon cas etait un double.
    Ah oui, erreur de ma part, j'ai pas fait gaffe....

  12. #32
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Par défaut
    très interessant

    Merci encore, jai plus qu'a attaquer le port GPIO et le serial et je peux finir mon programme mais cette partie m'inquiette beaucoup moins

    Bonne journée à toi

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Variable, classe, novice
    Par eltamatrox dans le forum C#
    Réponses: 11
    Dernier message: 08/06/2010, 15h25
  2. Passage variable classe fille -> classe mère
    Par Vincent F dans le forum C#
    Réponses: 4
    Dernier message: 13/07/2009, 17h46
  3. [PHP 5.3] Portée de variable: class > include > fonction
    Par Yanonix dans le forum Langage
    Réponses: 8
    Dernier message: 06/02/2009, 23h43
  4. Réponses: 2
    Dernier message: 11/07/2007, 10h40
  5. [POO] Portée des variables, classe....
    Par Avatar dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2005, 21h25

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