Problème pour l'enregistrement de mon XML [Résolu]

nicolashodbert 6 Messages postés dimanche 5 novembre 2000Date d'inscription 29 juin 2006 Dernière intervention - 26 juin 2006 à 17:21 - Dernière réponse : nicolashodbert 6 Messages postés dimanche 5 novembre 2000Date d'inscription 29 juin 2006 Dernière intervention
- 29 juin 2006 à 16:28
Mon but est de faire une appli avec une base de donnee en xml sur les mp3 et ensuite de les lires.une sorte de playlist mais un peu plus complet
En mode debug, j'ouvre mon open file dialog pour charger le fichier mp3.
les tag  artist titre ect s'affiche ensuite sur mes textbox une fois valider.
mes donnés sont mise dans un listview. j'appuie sur le bouton enregistrer pour mettre toutes les donnés de mon listview sur le xml, rien ne s'enregistre sur mon fichier.xml..
Et Quand j'écris manuellement dans mes textbox : titre, artiste, duré de la chanson, l'origine du fichier...sans utiliser mon openfileDialog
çà fonctionne nickel.
 Cà fait une semaine que je me défonce les neurones et les recherches sur les sites je n'ai rien trouver.J'utilise la librairie "bass.dll".
Merci pour votre aide.
Nico
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 27 juin 2006 à 08:17
3
Merci
Salut,
Il faudrait plus d'infos sur la façon dont tu sauves le fichier par exemple. Comment tu récupères le path de l'openFileDialogu, etc (un peu de code est toujours bienvenu pour aider).

<hr size= "2" /> VC# forever
=13319

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Meilleure réponse
nicolashodbert 6 Messages postés dimanche 5 novembre 2000Date d'inscription 29 juin 2006 Dernière intervention - 27 juin 2006 à 14:50
3
Merci
Voici le code source lorsqu'on clique sur le bouton pour ouvrir le fichier:
Je te remercie sincèrement pour ton aide

private

void Button_OpenFile_Click(object sender
, EventArgs e
){

this
.openFileDialog4
.FileName
= _fileLoad
;

if ( DialogResult
.OK
== this
.openFileDialog4
.ShowDialog(this
) ){

if ( File
.Exists(this
.openFileDialog4
.FileName
)){

_fileLoad
= this
.openFileDialog4
.FileName
;

if (_fileLoad
!= String
.Empty
){

// create the stream

J'ai mis cett fonction car je voulais faire une autre solution
pour voir ce que çà beuggait 
au lieu de le mettre ici
charger();

}

else

{

int error
= Bass
.BASS_ErrorGetCode();

Console
.WriteLine( Enum
.GetName(typeof(BASSErrorCode
), error
) );

}

}

}

}

private void charger(){

_stream
= Bass
. BASS_StreamCreateFile (_fileLoad
, 0, 0, BASSStream
.BASS_SAMPLE_SOFTWARE
| BASSStream
.BASS_SAMPLE_FLOAT
);

long len
= Bass
.BASS_ChannelGetLength(_stream
); // length in bytes

totaltime
= Bass
. BASS_ChannelBytes2Seconds (_stream
, len
); // the total time length

string m_fileLoad
;

TxtBx_Duree.Text = totaltime.ToString();

m_fileLoad
= _fileLoad
. ToString ();

// Pour avoir les tag on ouvre la librairie tag de bass.dll et de tag.dll

TAG_INFO tagInfo
= new TAG_INFO(m_fileLoad
);

if ( BassTags
.BASS_TAG_GetFromFile( _stream
, tagInfo
) ){

n_artist
= tagInfo
.artist
;

n_title
= tagInfo
.title
;

n_genre
= tagInfo
.genre
;

n_filename
= tagInfo
.filename
;

sFichier
= tagInfo
.filename
;

sArtiste
= tagInfo
.artist
;

sTitre
= tagInfo
.title
;

sCategorie
= "Musique";

sType
= "mp3";

sGenre
= tagInfo
.genre
;

sVol
= 10;

sCue
= 2;

sDepart
= 1;

sDureeFader
= 2;

sDateLu
= "Jamais lu";

sClassementTop
= 50;

sDuree
= totaltime
;

TxtBx_Auteur
.Text
= sArtiste
;

TxtBx_Titre
.Text
= sTitre
;

CmBx_Genre
.Text
= sGenre
;

TxtBx_OrFichier
.Text
= n_filename
;

TxtBx_OrFichier
.Text
= sFichier
;

TxtBx_OrFichier
. Focus ();

Bass
.BASS_StreamFree(_stream
);

_stream
= 0;}

}

une fois que c'est OK
on met à jour l'array list et le list view



private

void btnOk_Click(object sender, EventArgs e){

// Sauvegarde des valeurs dans l'arraylist

m_arraylist.Fichier = TxtBx_OrFichier.Text;

m_arraylist.Artiste = TxtBx_Auteur.Text;

m_arraylist.Titre = TxtBx_Titre.Text;

m_arraylist.Categorie = CmBx_Categorie.Text;

m_arraylist.Type = CmBx_Type.Text;

m_arraylist.Genre = CmBx_Genre.Text;

m_arraylist.Vol = Int32. Parse (TxtBx_Vol.Text);

m_arraylist.Cue =Single.Parse(TxtBx_Fin.Text);

m_arraylist.Depart = Single. Parse (TxtBx_Depart.Text);

m_arraylist.DureeFader = Int32.Parse(TxtBx_Fader.Text);

m_arraylist.DateLu = TxtBx_DateHeure.Text. ToString ();

m_arraylist.ClassementTop = Int32.Parse(TxtBx_Top.Text);

m_arraylist.Duree = Single. Parse (TxtBx_Duree.Text);

// OK pour traitement OK dans le MainForm

DialogResult = DialogResult.OK;

// Fermeture du formulaire
une autre classe attend la fermeture du formulaire en appuyant sur Ok
pour mettre à jour et l'ajouter sur  l'item du listview et de l'array list

this
.Close();}

Après tous ceci
Celà fonctionne
l'arraylist et le list view se met à jour Pas de problème

Une fois ceci fait je l'enregistre sur l'XML et là pas de mise à jour sur l'xml????
sauf si je le fait manuellement en écrivant sur les textbox.



La fonction qui sert à enregistrer sur l'XML
parmi une classe

public

void Save(string fichier){

// Sérialisation de la liste des comptes suivant le format de la liste des comptes

XmlSerializer ser = new XmlSerializer (typeof(FileList));

// Format d'écriture du fichier

XmlTextWriter writer = new XmlTextWriter(fichier, System.Text.Encoding.UTF8);

// write a readable file

writer.Formatting = Formatting.Indented;

// Remplissage du fichier avec le contenu de la sérialisation

ser.Serialize(writer, this
);

// Fermeture du fichier

writer.Close();}

Merci nicolashodbert 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de nicolashodbert
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 27 juin 2006 à 23:26
0
Merci
La variable fichier contient un path valide?
Sinon, mets un try-catch autour de ser.Serialize, et regarde l'exception qu'il te crache!

<hr size= "2" /> VC# forever
=13319
Commenter la réponse de cs_Bidou
nicolashodbert 6 Messages postés dimanche 5 novembre 2000Date d'inscription 29 juin 2006 Dernière intervention - 28 juin 2006 à 18:03
0
Merci
Voilà, j'ai mis les try et catch comme tu m'avais dit...
j'ai fait une nouvelle classe de façon à ce que une boite de dialogue s'ouvre lorsqu'il y a un crash et me dit l'erreur. 
Le compilateur ne me dit aucune erreur.
J'en ai mis un petit peu partout, mais rien n'y fait.

Au fait merci pour les execpetion, j'avais complètement oublié que çà existait.

j'envoie quand même la source, on ne sait jamais...

public

void Save(string fichier
){

try

{

// Sérialisation de la liste des comptes suivant le format de la liste des comptes

XmlSerializer ser
= new XmlSerializer (typeof(FileList
));

// Format d'écriture du fichier

XmlTextWriter writer
= new XmlTextWriter(fichier
, System
.Text
.Encoding
.UTF8
);

// write a readable file

writer
.Formatting
= Formatting
.Indented
;

// Remplissage du fichier avec le contenu de la sérialisation

ser
. Serialize (writer
, this
);

// Fermeture du fichier

writer
.Close();}

catch (glexeption e
){

// Voici ma nouvelle classe que j'initialise
lorsqu'il y l'erreur
m_Dialog r
= new m_Dialog();

r
.Show();

r
.erreur
= e
.Message
.ToString();}

}
Commenter la réponse de nicolashodbert
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 juin 2006 à 08:46
0
Merci
C'est quoi "glexeption " ?

Mets plutôt ceci :

catch(Exception e
)
{
   MessageBox.Show("Erreur", e.Message);
}

<hr size= "2" /> VC# forever
=13319
Commenter la réponse de cs_Bidou
nicolashodbert 6 Messages postés dimanche 5 novembre 2000Date d'inscription 29 juin 2006 Dernière intervention - 29 juin 2006 à 16:28
0
Merci
j'ai essayé
 toujours pas de message d'erreur
glexeption est une classe que j'ai faite, celà permet de personnaliser son message.
J' ai vu cà dans mon bouqin C#.Net
Je travaille avec SharpDevelopp.
SharpDevelopp a conçu une boite de dialogue personnaliser pour les execptions qui permet de récupérer les bugs de son application et si l'on veut on peut les transférer
sur son site et  les développeur corrige les problèmes.
J'ai fait à peu près pareil

Je crois que pour mon application je vais essayer autre chose, je me documente pour savoir s'il ya d'autre mode de sérilization de xml.

Je te remercie Bidou
Commenter la réponse de nicolashodbert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.