OVH Cloud OVH Cloud

La F.A.Q Visual Basic FR

7 réponses
Avatar
Pascal Daubias
Pour ceux qui n'ont pas remarqué, la nouvelle version de La F.A.Q Visual
Basic : 145 réponses à vos questions (19 nouvelles questions) en français
viens d'être publiée :
http://vb.developpez.com/faq/

Cette F.A.Q est bien présentée, rapide d'accès, et dispose d'un moteur de
recherche

:-)

7 réponses

Avatar
Eric
Bonjour,

"Pascal Daubias" écrivait

Pour ceux qui n'ont pas remarqué, la nouvelle version de La F.A.Q Visual
Basic : 145 réponses à vos questions (19 nouvelles questions) en français
viens d'être publiée :
http://vb.developpez.com/faq/



Voir les conseils postés par J. Chaudy du 02/07/2004 et notamment :
l'alinea 12
"...
. ne postez pas de messages commerciaux ou publicitaires
..."

De plus 145 réponses me parait bien insignifiant par rapport à ce que
propose ce newsgroup !

Cette F.A.Q est bien présentée, rapide d'accès, et dispose d'un moteur de
recherche




Ici aussi


Merci

Eric
Avatar
Zoury
Salut Eric! :O)

. ne postez pas de messages commerciaux ou publicitaires
..."



Ne serait-ce pas seulement dans le cas où le message est présenté dans un
but lucratif ? AMHA, tous messages concernant la publication ou la mise à
jour de FAQs ou de sites concernant VB sont les bienvenus, surtout si ils
sont présentés proprement comme ce fût le cas ici. François et Pierre l'ont
souvent fait dans le cas de mise à jour de la FAQ officielle du groupe.

Le but recherché par Pascal n'est pas de vendre quoi que soit mais plutot de
nous transmettre une information fort utile.

ce n'est que mon opinion.. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
ng
Salut,

Sympa cette FAQ, j'ai cependant qqes remarques :

Remarques générales :
* Préférer l'utilisation de Call pour l'appel de procédure, cela évite toute
ambiguitée
* Préférer l'utilisation de la version String des fonctions de gestion de
chaines qui et plus rapide que la version Variant, donc Left$(), Right$(),
Trim$(), Command$()... à la place de Left(), Right()...
* Attention à l'utilisation de IsNumeric()
* Pas de FSO en VB !!!!!!!!!!!!!


2.1
* Comment faire un programme sans interface graphique, de type console ?
On pourrait parler du plugin vbAdvance qui permet de compiler réellement des
progs VB console.


2.2
* Comment insérer un saut de ligne ?
Plus généralement sous windows un saut de ligne est composé de 2 char : CR &
LF, vb propose alors plusieurs constantes :
vbNewLine
vbCrLf
ou encore vbCr & vbLF et Chr$(13) & Chr$(10)

* Comment faire une procédure ou une fonction qui a un ou plusieurs
paramètres optionnels ?
On pourrait aussi parler des arguments en ParamAray ici.

* Comment rechercher une chaîne de caractères dans une autre ?
On pourrait parler de InStrRev() aussi ici.

* Comment récupérer la ligne de commande passée à l'exécutable ?
Et la gestion des guillemets ?

Public Sub Main()
Dim tblArg() As String, i As Integer

'//On récupère un tableau d'arguments
tblArg = SplitArg(Command$)

For i = 0 To UBound(tblArg)
MsgBox tblArg(i)
Next

End Sub

Public Function SplitArg(ByVal strArg As String) As String()
Dim i As Integer, GuillemetOuvert As Boolean
Dim sCar As String * 1, sArgEnCours As String
Dim nInd As Integer, tblArg() As String
strArg = strArg & " ": nInd = 0
For i = 1 To Len(strArg)
sCar = Mid$(strArg, i, 1)
If sCar = """" Then
GuillemetOuvert = Not GuillemetOuvert
Else
If sCar = " " And Not GuillemetOuvert Then
ReDim Preserve tblArg(nInd)
tblArg(nInd) = sArgEnCours
sArgEnCours = ""
nInd = nInd + 1
Else
sArgEnCours = sArgEnCours & sCar
End If
End If
Next
SplitArg = tblArg
Erase tblArg
End Function


3.1
* Comment faire pour que ma form soit toujours au premier plan ?
J'aurai plutot mis le SetWindowsPos() dans Form_Activate, car l'appel de cet
API provoque l'affichage prématuré de la Form, ce qui peut provoquer un
effet désagréable (notamment s'il y a du code de positionnement apres cet
appel).

* Comment ouvrir une même form plusieurs fois ?
Aie! Jamais de As New pour instancier une classe ! Car il n'est plus
possible de libérer correctement la nouvelle instance créée, il faudrait
plutot utiliser du code comme :

Dim fMaForm As Form1
'//Création de l'instance
Set fMaForm = New Form1

'//Code
Call fMaForm.Show()

'//On libère
Set fMaForm = Nothing


3.2
* Comment récupérer une par une les lignes d'un textbox multilignes ?
Attention je pense à la définition de ligne, je pense qu'il aurait été bon
de mettre quand même l'exemple avec Split().

* Comment mettre plusieurs colonnes dans une ComboBox ?
Attention à l'utilisation en VB et surtout au déploiement des controles
Forms 2.0


3.3
* Peut-on changer la police ou la couleur du texte avec MsgBox ?
Si on peut ! On peut même positionner les MsgBoxes :
http://www.mvps.org/vbvision/Sample_Projects.htm#MessageBox_Demo


4
* Comment obtenir la taille graphique d'une chaine de caractères ?
On pourrait parler de Object.TextWidth() et Object.TextHeight() ici !


5
* Comment exécuter des commandes Dos ?
Attention ! Ce n'est pas command.com sur tous les sytèmes, on utiliserait
plutot :
Call Shell(Environ$("ComSpec") & " /c dir *.* > c:liste.txt", vbHide)

* Comment connaître la résolution de l'écran ?
Attention il y a des bugs connus avec cette méthode, je ne sais pas si c'est
corrigé avec le dernier SP.

* Comment récupérer les chemins complets des répertoires Windows, System, et
WindowsTemp ?
Aie, aie, aie... FSO quelle horreur ! Gardons ca pour le scripting, pas de
FSO en vb voyons !!!


5.1
* Comment savoir si un fichier existe ?
On utilisera plutot ce genre de code pour ça :
Function FileExists(ByRef sFileName As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(sFileName) And vbDirectory) = 0)
End Function

* Comment copier un répertoire ?
ahhh encore FSO, on fera ca par API plutot !!!

*Comment supprimer un répertoire ?
Idem...

* Comment obtenir la taille d'un répertoire ?
Idem...

* Quelle référence dois-je ajouter à mon projet pour pouvoir utiliser le
FileSystemObject ?
De mieux en mieux :D !

* Comment déterminer le type d'un lecteur ?
Encore et tjrs ce FSO...

* Comment savoir si un CD se trouve dans l'un des lecteurs du système ?
Décidemment !!!!!


5.2
* Comment envoyer un e-mail ?
Y a d'autres moyens, j'aurai plutot mis un exemple avec les sockets
(controle winsock par exemple)...

* Comment décoder un fichier attaché en base 64 ?
Mouais... y a mieux :

Public Function Base64Encode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte
If Len(S) = 0 Then Exit Function
Enc StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve b(0 To (UBound(b) 3) * 3 + 2)
ReDim Preserve Out(0 To (UBound(b) 3) * 4 + 3)
For i = 0 To UBound(b) - 1 Step 3
Out(j) = Enc(b(i) 4): j = j + 1
Out(j) = Enc((b(i + 1) 16) Or (b(i) And 3) * 16): j = j + 1
Out(j) = Enc((b(i + 2) 64) Or (b(i + 1) And 15) * 4): j = j + 1
Out(j) = Enc(b(i + 2) And 63): j = j + 1
Next i
For i = 1 To i - L: Out(UBound(Out) - i + 1) = 61: Next i
Base64Encode = StrConv(Out, vbUnicode)
End Function

Public Function Base64Decode$(S$)
Dim b() As Byte, Out() As Byte, i&, j&, L&, Enc() As Byte, Dec(0 To 255)
As Byte
If Len(S) = 0 Then Exit Function
Enc StrConv("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
vbFromUnicode)
For i = 0 To 255: Dec(i) = 64: Next
For i = 0 To 63: Dec(Enc(i)) = i: Next
L = Len(S): b = StrConv(S, vbFromUnicode)
ReDim Preserve Out(0 To (L 4) * 3 - 1)
For i = 0 To UBound(b) Step 4
Out(j) = (Dec(b(i)) * 4) Or (Dec(b(i + 1)) 16): j = j + 1
Out(j) = (Dec(b(i + 1)) And 15) * 16 Or (Dec(b(i + 2)) 4): j = j + 1
Out(j) = (Dec(b(i + 2)) And 3) * 64 Or Dec(b(i + 3)): j = j + 1
Next i
If b(L - 2) = 61 Then j = 2 Else If b(L - 1) = 61 Then j = 1 Else j = 0
ReDim Preserve Out(0 To UBound(Out) - j)
Base64Decode = StrConv(Out, vbUnicode)
End Function

* Comment uploader un fichier par FTP ?
Le controle Inet est connu pour être buggé... On utiliserait plutot les APIs
Inet ou les Sockets...


7
* Comment faire un programme d'installation ?
InnoSetup est qd même meilleur... On pourait aussi faire ces progs soit même
en VB, un prog d'amorçage est nécessaire par contre : on pourrait utiliser
un EXE autoextracible...

* Quels sont les fichiers nécessaires pour que mon logiciel fonctionne ?
Il faudrait aussi parler des DLLs satellites ! Car par défaut on en a besoin
sinon ca démarre pas ! (cf IPDK pour enlever la dépendance).

* Comment associer une extension à un programme ?
La première méthode est je pense à réserver au scripting.

* Comment obtenir le temps d'exécution d'une partie de mon code ?
Zoury va crier !! :) ==> http://www.mvps.org/vb/tips/benchmarks.htm pour
faire de bons benchmarks

* Comment n'autoriser qu'une seule instance de mon application ?
Un petit mot sur App.PrevInstance aurait été le bienvenu aussi.




--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/



Pascal Daubias a écrit :

Pour ceux qui n'ont pas remarqué, la nouvelle version de La F.A.Q
Visual Basic : 145 réponses à vos questions (19 nouvelles questions)
en français viens d'être publiée :
http://vb.developpez.com/faq/

Cette F.A.Q est bien présentée, rapide d'accès, et dispose d'un
moteur de recherche

:-)


Avatar
Pierre Alexis [MVP]
Salut,

Tu as écrit :

Ne serait-ce pas seulement dans le cas où le message est présenté dans un
but lucratif ? AMHA, tous messages concernant la publication ou la mise à
jour de FAQs ou de sites concernant VB sont les bienvenus, surtout si ils
sont présentés proprement comme ce fût le cas ici. François et Pierre l'ont
souvent fait dans le cas de mise à jour de la FAQ officielle du groupe.



"Offiicielle" ? Pas plus que celle de Pascal... ;-)

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Pascal Daubias
Bonjour,

Il me semble que d'une part l'accès à cette F.A.Q est non seulement gratuit,
mais de plus son accès est libre, il ne demande meme pas de s'inscrire...

De plus cette F.A.Q est bien en relation avec le sujet de ce newsgroup.....

Ce genre de F.A.Q évite que ce soient toujours les memes questions qui
soient posées encore et encore,
ce qui nous permet peut etre de passer plus de temps sur des sujets plus
avancés ?

:-)

Personnellement je trouve les liens qui sont postés sur vb : F.A.Q, cours,
tutoriels, etc... utiles, à condition que l'accès ne soit pas trop difficile
:c'est très ennuyeux les sites très lents et lourds et qui affichent pleins
de popups de pubs, sur www.developpez.com ce n'est pas le cas, l'accès est
très rapide car c'est un serveur dédié, il n'y à pas de popups de pubs, et
la cerise sur le gateau : un moteur de recherche intégré :-)

Et je suis outré en effet moi aussi par les publicités pour des sites qui
n'ont rien à voir avec le sujet du newsgroup (jeux, casino, sites pirates,
sites x, etc...) et qui sont des liens qui sont en général postés de
mulitples fois (donc spams) sur de nombreux newsgroups (hors sujet donc),
heureusement en général ces spams hors sujets et donc polluants sont
supprimés à vue par les administrateurs ou les robots de usenet :-)
Avatar
Zoury
> "Offiicielle" ? Pas plus que celle de Pascal... ;-)



ah oui!? et bien on en apprend tous les jours ;O)
Avatar
Pierre Alexis [MVP]
Salut Zoury,

Tu as écrit :

ah oui!? et bien on en apprend tous les jours ;O)



Ben je vois pas ce qu'elle a de plus officielle qu'une autre FAQ...

--
Pierre ALEXIS - MVP Visual Basic
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/