je voudrais savoir si il est possible de coder une table de hashage en VB6?
Version imprimable
je voudrais savoir si il est possible de coder une table de hashage en VB6?
Une table ou un algorithme?
D'après moi, une table ne se "code" pas...
Mais je peux me tromper.
non c un tableau comme en Perl que j'aimerai faire du style couple "clé-valeur"
En créant un fichier texte contenant ta table?
pourquoi passer par un fichier texte :koi:
qu'est ce que tu veux faire exactement?
j'envoi des commandes a une imprimante et elle me repond un message ,OK si ca c bien passer ou un message d'erreur, le probleme c que ce message n'est pas assez explicite pour pouvoir l'afficher.
donc je veux faire un tableau qui a pour clé la réponce de l'imprimante et pour valeur une chaine de caractère plus explicite pour pouvoir l'afficher
Pas besoin de faire une table de hashage pour cela. Une simple collection suffit.
Tu peux aussi utiliser un dictionnaire.
Dans un module
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Type RepImpr CodeErreur As String DescriptionErreur As String End Type Private Sub AnalyseErreur(LeCodeErreur as srting) Dim CodesErr() As RepImpr CodesErr(0).CodeErreur = "EEEERR2" CodesErr(0).CodeErreur = "Bourage papier" CodesErr(1).CodeErreur = "ZEDERR2" CodesErr(0).CodeErreur = "Plus de papier" For i = 1 To UBound(CodesErr) If CodesErr(i).CodeErreur = LeCodeErreur Then MsgBox CodesErr(i).DescriptionErreur End If Next i End Sub
@Catbull : tu peut me rappeler la synthaxe d'une collection ca me dit quelque chose(en fait je crois que c'est ce qui corrspond au Hashtable en Perl)
@Vesta : je teste et je redit ca
Voici un exemple :
J'ai créé une énumération pour lister les numéros d'erreur. La collection correspond imparfaitement. En effet la clé n'est pas un numéro mais une chaine de caractères. Il faut donc passer par un mécanisme de conversion d'où l'utilisation du CStr.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public Enum MSG_IMPR MSG_OK = 0 MSG_PLUS_DE_PAPIER = 10 MSG_BOURRAGE = 20 MSG_PLUS_ENCRE = 30 End Enum Public Sub Test() Dim Messages As New Collection Messages.Add "Message_1", CStr(MSG_OK) Messages.Add "Message_2", CStr(MSG_PLUS_DE_PAPIER) Messages.Add "Message_3", CStr(MSG_BOURRAGE) Messages.Add "Message_4", CStr(MSG_PLUS_ENCRE) MsgBox Messages(CStr(MSG_BOURRAGE)) End Sub
Ou, également, l'utilisation d'un fichier de ressources (avantage : on peut le modifier et le faire évoluer sans toucher au code et sans générer autre chose) !
je suis sur ta solution Catbull voici mon code
maintenant dans ma forme j'ai caCode:
1
2
3
4
5
6
7
8
9
10 Public Enum MSG_IMPR MSG_OK = "OK" MSG_ERR = "ERROR" MSG_ERR_CDE = "ERROR CDE" End Enum Public Sub RemplirCol() Form1.AnswerCol.Add "The escape command was successfully executed", CStr(MSG_OK) Form1.AnswerCol.Add "It is produced an error", CStr(MSG_ERR) Form1.AnswerCol.Add "The escape command is incorrect", CStr(MSG_ERR_CDE) End Sub
mais comment affecter la variable cléCode:
1
2
3
4
5
6
7
8
9
10 Select Case clé Case MSG_IMPR.MSG_OK lblAnswer.Caption = AnswerCol(CStr(MSG_OK)) Case MSG_IMPR.MSG_ERR lblAnswer.Caption = AnswerCol(CStr(MSG_ERR)) Case MSG_IMPR.MSG_ERR_CDE lblAnswer.Caption = AnswerCol(CStr(MSG_ERR_CDE)) Case Else lblAnswer.Caption = answer End Select
EDIT : en fait ca marche pas car un enum ne prend pas les String comme valeur :(
bon j'ai trouver une solution sans enum ca va allez comme ca
merci pour ;)