Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug 2003 & 2005 "la class String" ? dans la creation d'une class ?

8 réponses
Avatar
TroXsA - [VB.NET-2005]
Bonjour a tous

ce message s'adresse particulièrement aux MVPs et MS (enfin je pense)

J'ai rencontré souvent le même problème dans la création d'une class
La class en question ce trouve sur ce site :
http://www.codeproject.com/vb/net/mp3id3v1.asp

Les problèmes ce trouve sur toutes les déclarations suivantes :

Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)

et voila les phénomènes anormales
http://planetenova.free.fr/1.jpg
http://planetenova.free.fr/2.jpg

Dans l'image 1 on vois tres bien qu'il y a aucun probleme et a
la validation de la ligne il manque le " a la fin de la chaine string (voir
image 2)
et ça pause un vrais probleme si on souhaite utiliser la valeurs directement
ex : File.Move("1.mp3", MP3ID3v1.FrameTypes.Artist)

je suis obligé de passer par un controle "string" pour reformater la chaine,
ce
que je veux dire par la, c'est que je passe par un textBox.text pour
recuperer la valeur
ex : TextBox1.text = MP3ID3v1.FrameTypes.Artist
File.Move("1.mp3", TextBox1.text)

8 réponses

Avatar
TroXsA - [VB.NET-2005]
Petite précision l'erreur est : Caractères non conformes dans le chemin
d'accès.


"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
4327500f$0$12688$
Bonjour a tous

ce message s'adresse particulièrement aux MVPs et MS (enfin je pense)

J'ai rencontré souvent le même problème dans la création d'une class
La class en question ce trouve sur ce site :
http://www.codeproject.com/vb/net/mp3id3v1.asp

Les problèmes ce trouve sur toutes les déclarations suivantes :

Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)

et voila les phénomènes anormales
http://planetenova.free.fr/1.jpg
http://planetenova.free.fr/2.jpg

Dans l'image 1 on vois tres bien qu'il y a aucun probleme et a
la validation de la ligne il manque le " a la fin de la chaine string
(voir image 2)
et ça pause un vrais probleme si on souhaite utiliser la valeurs
directement
ex : File.Move("1.mp3", MP3ID3v1.FrameTypes.Artist)

je suis obligé de passer par un controle "string" pour reformater la
chaine, ce
que je veux dire par la, c'est que je passe par un textBox.text pour
recuperer la valeur
ex : TextBox1.text = MP3ID3v1.FrameTypes.Artist
File.Move("1.mp3", TextBox1.text)






Avatar
Fabien Bezagu
TroXsA,

Je ne suis ni MVP, ni MS mais je vais essayer de faire avancer le
schmilblick.

Ce que je constate, c'est que la méthode FileGet remplit la chaîne de
longueur fixe avec des caractères Nothing. Pourquoi ? Car c'est une méthode
d'un autre temps écrite pour les développeurs d'un autre temps :-) Il est
largement préférable d'utiliser les méthodes des classes .NET (par exemple
FileStream) qui savent bien manipuler les classes .NET.

Le problème dans l'utilisation de ta string avec des caractères null, c'est
que ce n'est pas la façon dont les méthodes des classes .NET ont l'habitude
de travailler. Une astuce que j'ai trouvée est de passer par la méthode
Trim.

Mais avant tout, je te conseille vivement de réécrire les méthodes d'accés
aux fichiers de cette classe dite .NET mais écrite en VB6...

Fabien


"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
4327500f$0$12688$
Bonjour a tous

ce message s'adresse particulièrement aux MVPs et MS (enfin je pense)

J'ai rencontré souvent le même problème dans la création d'une class
La class en question ce trouve sur ce site :
http://www.codeproject.com/vb/net/mp3id3v1.asp

Les problèmes ce trouve sur toutes les déclarations suivantes :

Dim strTag As New String(" ", 3)
Dim strTitle As New String(" ", 30)
Dim strArtist As New String(" ", 30)
Dim strAlbum As New String(" ", 30)
Dim strYear As New String(" ", 4)
Dim strComment As New String(" ", 28)

et voila les phénomènes anormales
http://planetenova.free.fr/1.jpg
http://planetenova.free.fr/2.jpg

Dans l'image 1 on vois tres bien qu'il y a aucun probleme et a
la validation de la ligne il manque le " a la fin de la chaine string
(voir image 2)
et ça pause un vrais probleme si on souhaite utiliser la valeurs
directement
ex : File.Move("1.mp3", MP3ID3v1.FrameTypes.Artist)

je suis obligé de passer par un controle "string" pour reformater la
chaine, ce
que je veux dire par la, c'est que je passe par un textBox.text pour
recuperer la valeur
ex : TextBox1.text = MP3ID3v1.FrameTypes.Artist
File.Move("1.mp3", TextBox1.text)






Avatar
TroXsA - [VB.NET-2005]
Ok :) je suis pas expert dans la creation de class mais bon il y a un debut
a tout :)
je vais modifier la class (essayer du moin)

Merci d'avoir apporté une solution au probleme ... mais je trouve quand meme
que ce
comportement n'est pas normale

+ +

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl
Avatar
TroXsA - [VB.NET-2005]
J'ai bien fait des testes mais ça change rien du tout ...
j'ai toujours le meme probleme ... je comprend pas là !
Avatar
Fabien Bezagu
Quels tests as-tu fait ? En passant par la méthode Trim ? Ou en réécrivant
la façon dont la classe accéde aux fichiers ? Peux-tu poster le code
incriminé ?

Fabien


"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
43288c1e$0$18576$
J'ai bien fait des testes mais ça change rien du tout ...
j'ai toujours le meme probleme ... je comprend pas là !



Avatar
TroXsA - [VB.NET-2005]
En passant par trim ...
En passant par un count de la chaine string il conte
toujours 30 caractaires avec ou sans Trim que je
mete des trim dans la class c'est exactement la meme chose

Le code c'est sur le site que j'ai donné (dans le premier poste)


...
Merci de ton aide

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl

"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:

Quels tests as-tu fait ? En passant par la méthode Trim ? Ou en réécrivant
la façon dont la classe accéde aux fichiers ? Peux-tu poster le code
incriminé ?

Fabien


"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
43288c1e$0$18576$
J'ai bien fait des testes mais ça change rien du tout ...
j'ai toujours le meme probleme ... je comprend pas là !







Avatar
Fabien Bezagu
Il faut faire un Trim sur le caractère Nothing.

En rajoutant des lignes comme celle-ci, ça a l'air de fonctionner
correctement chez moi :

strArtist = strArtist.Trim(New Char() {Nothing})

Fabien

"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
dgdvlp$2ih$
En passant par trim ...
En passant par un count de la chaine string il conte
toujours 30 caractaires avec ou sans Trim que je
mete des trim dans la class c'est exactement la meme chose

Le code c'est sur le site que j'ai donné (dans le premier poste)


...
Merci de ton aide

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl

"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news:
Quels tests as-tu fait ? En passant par la méthode Trim ? Ou en
réécrivant la façon dont la classe accéde aux fichiers ? Peux-tu poster
le code incriminé ?

Fabien


"TroXsA - [VB.NET-2005]" a écrit dans le message de news:
43288c1e$0$18576$
J'ai bien fait des testes mais ça change rien du tout ...
j'ai toujours le meme probleme ... je comprend pas là !











Avatar
TroXsA - [VB.NET-2005]
Tien, je sais vais pas qu'on pouvais faire comme ça :)
j'ai pas testé encore ... je testerais ça ce soirchez moi

Merci

--
TroXsA
http://cerbermail.com/?rIXgaw9Xsl