Comment comparer 2 string quand on a 1 inconnue ?

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 1 juin 2007 à 10:37
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010 - 1 juin 2007 à 15:43
Bonjour,

j'ai un serveur d'imprimante qui partage des spool que je liste dans une listview.
j'utilise ensuite le "ListView1_ItemMouseHover" pour recuperer une partie de string dans le string comme ceci :
Dim

spool
As
String = e.Item.Text.ToUpper

Dim PrintModele
As
String = Strings.Right(spool, 8)

 je fait comme ça car mes noms de spools sont formatés à l'identique et je veux surtout connaitre le modele de l'imprimante qui est en fin de nom
(exemple de spool pour une lexmark T623 : "N° imprimante_batiment_T632")

ensuite, je recupere la liste des fichiers textes contenus dans un repertoire comme ceci :
Dim ArrayFolder
As Array = Directory.GetFiles(
"C:\temp",
"*.TXT", SearchOption.TopDirectoryOnly)

et  c'est mainentant que je sollicite votre aide pour ce que j'aimerai mettre en code :

comment faire pour comparer le string que je recupere à partir de mon spool pour verifier si un fichier texte correspondant existe dans le repertoire ?
sachant que le nomage du fichier texte est fixé par rapport au modele de l'imprimante,
par exemele : T632.txt, C910.txt, etc....

en resumé :
si par rapport à mon string 1 qui est egale à "xxx_T632.txt" (par rapport à mon exemple, je suis obligé de prendre plus de caracteres que j'en ai besoin dans mon "strings.right" vu que certains modeles ont des noms plus longs) il existe un fichier texte dont le nom correspond à une partie de ce string 1, alors..

c'est la methode de comparaison qui me bloque... j'essaye de partir sur ça mais ça donne rien :

If
InStr(PrintModele.ToUpper, ArrayFolder.ToString.ToUpper) > 0
Thenbesoin d'un coup de pouce svp. Merci !

7 réponses

Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
1 juin 2007 à 10:41
question subsidaire :

comment faire sur ce forum pour editer un de ses posts pour correction des fautes (ou suppression quand on fait des doublons par erreur ?)

merci
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 juin 2007 à 11:22
Salut,
-> Editer tes posts: IMPOSSIBLE
-> Suppression: Un admin bienveillant le fera à ta place: Merci Admin
-> Pour ton problème: pas d'idée.
@+: Ju£i?n
Pensez: Réponse acceptée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
1 juin 2007 à 12:07
de rien jrivet ^^


découpes mieux ta chaine, si tu souhaites récupérer lce qui se trouve après le dernier '_', plutot que de prendre en dur les 8 derniers caractères
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
1 juin 2007 à 13:21
je sais bien... mais le probleme c'est que je suis tributaire d'une configuration existante, deja en place depuis un certain temps, et que tous les nom de spool n'ont pas forcement le "_" avant le nom du modele d'imprimante à la fin.
alors je fais ça je risque de recuperer une mauvaise info.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
1 juin 2007 à 13:37
bonjour,
dans la fonction 
 InStr(PrintModele.ToUpper, ArrayFolder.ToString.ToUpper) > 0 Then

en 1er paramètre tu met la chaine complète, mais tu oublie de mettre le paramètre de début de la comparaison !! soit 0 ou 1
InStr(1,
PrintModele.ToUpper, ArrayFolder.ToString.ToUpper) > 0 Then
ou, le paramètre start étant optionnel
InStr(
, PrintModele.ToUpper, ArrayFolder.ToString.ToUpper) > 0
Then

A+
louis
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
1 juin 2007 à 14:58
Non, je crois que le coup du 1 avant ne compte pas vraiment par rapport à mon probleme.

je suis passé par cette méthode et c'est déja mieux :

For Each IMP As String In ArrayFolder
If InStr(PrintModele.ToUpper, IMP.ToString.ToUpper) > 0 Then
End If
Next


la comparaison se fait, mais j'ai encore un probleme :
le string IMP = "C:\temp\le nom du modele.txt"
et maintenant je veux recuperer uniquement "nom du modele" comme string.
donc il faut que je degagae tout ce qui est avant ("c:\temp")
et tout ce qui est apres (".txt")
je vais voir ce que je peux faire avec le ".trim"
0
Tyrell2 Messages postés 251 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 2 novembre 2010
1 juin 2007 à 15:43
ayez j'ai trouvé comment faire; non pas avec ".trim" mais grace à ".replace"
merci.
0