TROUVER UNE LETTRE LIBRE POUR UN LECTEUR VERSION 2
jorisstella
Messages postés16Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention20 juillet 2003
-
3 juin 2003 à 21:12
DeadlyPredator
Messages postés222Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention30 juin 2008
-
18 févr. 2004 à 18:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
DeadlyPredator
Messages postés222Date d'inscriptionjeudi 15 janvier 2004StatutMembreDernière intervention30 juin 2008 18 févr. 2004 à 18:46
HEY. MEME PAS BESOINS DE DRIVELISTBOX
<
function FindLetter as string
on error resume next
dim fso
set fso=createobject("scripting.filesystemobject")
for i = asc("c") to asc("z")
if fso.getdrive(chr(i) & ":").driveletter=empty then findletter=chr(i):exit for
next
set fso=nothing
end function
>
c pas beau ça?
cs_Darkukai
Messages postés38Date d'inscriptionvendredi 27 septembre 2002StatutMembreDernière intervention29 mai 2006 16 juin 2003 à 11:11
Merci de ton aide mauricet
j'aime les commentaires qui ne se contente pas de critiquer :)
je suis de ton avis d'autant plus que pour moi le but n'est pas forcément de trouver une lettre de libre a pouvoir assignée mais de progresser en vb
merci
cs_Mauricet
Messages postés89Date d'inscriptionlundi 3 mars 2003StatutMembreDernière intervention28 juillet 2008 9 juin 2003 à 13:13
Bonjour
A mon avis, il ne faut jamais abandonner, bien que le code de Renfield est meilleur, il faut faire aboutir ton idée afin d'en tirer l'expérience.
Je me suis permit de modifier ton code, tout en restant dans ton idée.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim lettre As String
Dim numlettre As Integer
'rempli list1 du contenu du poste de travail
For i = 0 To 25
List1.AddItem (Drive1.List(i))
If Drive1.List(i) = "" Then Exit For
Next i
i = 1
Do Until lettre = "z"
lettre = Mid$(List1.List(i - 1), 1, 1)
'affecte la valeur ascii de lettre
If lettre <> "" Then numlettre = Asc(lettre)
'vérifie si les lettres se suivent
'If Asc(Mid$(List1.List(i), 1, 1)) <> numlettre Then
If List1.List(i) = "" Then
'elle se suivent pas donc y a une lettre de libre
Text1.Text = Chr(numlettre + 1)
numlettre = Asc(Text1.Text)
List2.AddItem Chr(numlettre)
Form1.Print numlettre
If numlettre 122 Then lettre "z"
End If
i = i + 1
Loop
End Sub
A bientôt
Maurice Thiébaut
cs_Darkukai
Messages postés38Date d'inscriptionvendredi 27 septembre 2002StatutMembreDernière intervention29 mai 2006 5 juin 2003 à 09:04
j'ai mis 10 parceque comme je suis un DEBUTANT je connaissais pas la propriété listcount de drivelistbox mais c'est nickel je met la source à jour
merci
au fait pour les plantages moi çà tourne très bien, je suis sous 2000
vous êtes avec quel système ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 4 juin 2003 à 22:12
ton programme plante, des que je cliques sur un bouton....
tu m'expliqueras 2 choses , stp :
- pourquoi tu for i = 0 to 10 (pourquoi 10 !!!!!!)
- pourquoi tu places dans list1 les controles presents dans le Drive....
voici mon code , du clic sur le bouton :
Private Sub Command1_Click()
'26 lettres, des Bytes suffisent donc amplement (0->255)
Dim a As Byte, i As Byte, Existe As Boolean
'on vide la liste
List1.Clear
For a = Asc("a") To Asc("z") 'on parcours tout l'alphabet
Existe = False 'flag permettant de savoir si un lecteur possede la lettre en cours
For i = 0 To Drive1.ListCount - 1 'parcours la liste de lecteurs
If Left$(Drive1.List(i), 1) = Chr$(a) Then 'si la lettre du lecteur est celle analysée
Existe = True 'on met le flag a vrai
Exit For 'on ne regarde pas les autres lecteurs
End If
Next i
' si aucun lecteur n'a cette lettre, on l'ajoute dans la liste
If Not Existe Then List1.AddItem Chr$(a)
Next a
End Sub
voila, mais j'imagines que "si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)"
cs_Darkukai
Messages postés38Date d'inscriptionvendredi 27 septembre 2002StatutMembreDernière intervention29 mai 2006 4 juin 2003 à 11:08
faut pas toucher au drivelistbox (y devrait être cacher d'ailleurs)
je m'en sert juste pour lister le contenu du poste de travail
si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)
@+
jorisstella
Messages postés16Date d'inscriptionmardi 1 avril 2003StatutMembreDernière intervention20 juillet 2003 3 juin 2003 à 21:12
je ne l'ai pas trop regardé, je l'ai juse, lancé, la je suis mort, je vais pas me prendre la tete, avec ton code, je peut selectionner, nimporte kel lettre, lecran de debogage se lance!
Tr
18 févr. 2004 à 18:46
<
function FindLetter as string
on error resume next
dim fso
set fso=createobject("scripting.filesystemobject")
for i = asc("c") to asc("z")
if fso.getdrive(chr(i) & ":").driveletter=empty then findletter=chr(i):exit for
next
set fso=nothing
end function
>
c pas beau ça?
16 juin 2003 à 11:11
j'aime les commentaires qui ne se contente pas de critiquer :)
je suis de ton avis d'autant plus que pour moi le but n'est pas forcément de trouver une lettre de libre a pouvoir assignée mais de progresser en vb
merci
9 juin 2003 à 13:13
A mon avis, il ne faut jamais abandonner, bien que le code de Renfield est meilleur, il faut faire aboutir ton idée afin d'en tirer l'expérience.
Je me suis permit de modifier ton code, tout en restant dans ton idée.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim lettre As String
Dim numlettre As Integer
'rempli list1 du contenu du poste de travail
For i = 0 To 25
List1.AddItem (Drive1.List(i))
If Drive1.List(i) = "" Then Exit For
Next i
i = 1
Do Until lettre = "z"
lettre = Mid$(List1.List(i - 1), 1, 1)
'affecte la valeur ascii de lettre
If lettre <> "" Then numlettre = Asc(lettre)
'vérifie si les lettres se suivent
'If Asc(Mid$(List1.List(i), 1, 1)) <> numlettre Then
If List1.List(i) = "" Then
'elle se suivent pas donc y a une lettre de libre
Text1.Text = Chr(numlettre + 1)
numlettre = Asc(Text1.Text)
List2.AddItem Chr(numlettre)
Form1.Print numlettre
If numlettre 122 Then lettre "z"
End If
i = i + 1
Loop
End Sub
A bientôt
Maurice Thiébaut
5 juin 2003 à 09:04
merci
au fait pour les plantages moi çà tourne très bien, je suis sous 2000
vous êtes avec quel système ?
4 juin 2003 à 22:12
tu m'expliqueras 2 choses , stp :
- pourquoi tu for i = 0 to 10 (pourquoi 10 !!!!!!)
- pourquoi tu places dans list1 les controles presents dans le Drive....
voici mon code , du clic sur le bouton :
Private Sub Command1_Click()
'26 lettres, des Bytes suffisent donc amplement (0->255)
Dim a As Byte, i As Byte, Existe As Boolean
'on vide la liste
List1.Clear
For a = Asc("a") To Asc("z") 'on parcours tout l'alphabet
Existe = False 'flag permettant de savoir si un lecteur possede la lettre en cours
For i = 0 To Drive1.ListCount - 1 'parcours la liste de lecteurs
If Left$(Drive1.List(i), 1) = Chr$(a) Then 'si la lettre du lecteur est celle analysée
Existe = True 'on met le flag a vrai
Exit For 'on ne regarde pas les autres lecteurs
End If
Next i
' si aucun lecteur n'a cette lettre, on l'ajoute dans la liste
If Not Existe Then List1.AddItem Chr$(a)
Next a
End Sub
voila, mais j'imagines que "si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)"
4 juin 2003 à 11:08
je m'en sert juste pour lister le contenu du poste de travail
si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)
@+
3 juin 2003 à 21:12
Tr