Bonjour,

J'ai ce code qui sert à lire un fichier en caractères grecs et à s'en servir. Jen'y arrive pas en VB4 mais ce code fonctionne en VB6. Quelqu'un pourrait-il m'aider à transposer ?

Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Const LCID = &H408 'Greek Greece
 
Private Sub Form_Load()
 
    Me.Left = (Screen.Width - Me.Width) / 2
    Me.Top = (Screen.Height - Me.Height) / 2
 
    Show
 
    Dim MaChaine As String, Fichier1 As String, Fichier2 As String
    Dim Chemin As String, MaChaineTotale As String
 
    Chemin = CurDir
 
    Fichier1 = Chemin + "\Prenoms Grecs.txt"
    Fichier2 = Chemin + "\Prénoms Corrigés.txt"
 
    Open Fichier1 For Input As #1
    Open Fichier2 For Output As #2
 
    X = 1       'compteur
    Text1.Font.Name = "Arial"
 Text1.Font.Charset = 161 'greek
    Do While Not EOF(1)
 
        Line Input #1, MaChaine    'Lit le fichier de prénoms grecs, ligne par ligne
        MaChaine = LCase(MaChaine)  'Transforme cette ligne en minuscules
 
                'Met le premier caractère en Majuscule
        MaChaine = UCase(Left(MaChaine, 1)) + Right(MaChaine, Len(MaChaine) - 1)
                'Ecrit le résultat dans le second fichier
        'Write #2, MaChaine
        Write #2, WriteBack(MaChaine, LCID)
 
                'Charge la listBox
        List1.AddItem MaChaine
                'Concatène les lignes lues
        MaChaineTotale = MaChaineTotale + MaChaine
                'Ecrit la première ligne lue dans le Label
        If X = 1 Then Label1.Caption = MaChaine
                'Incrémente le compteur
        X = X + 1
                'Attend que tout soit exécuté
        XX = DoEvents()
    Loop
    Close
 
            'Rempli le TextBox avec MaChaineTotale
 
 
    Text1.Text = MaChaineTotale
            'Attend que tout soit exécuté
    XX = DoEvents()
 
            'Et maintenant, ouvre et lit le Fichier2
    Open Fichier2 For Input As #2
            'Lit les données que l'on y avait enregistrées
    Do While Not EOF(2)
        Line Input #2, MaChaine
 
            'Et charge la comboBox
        Combo1.AddItem MaChaine
    Loop
    Close
 
            'Remet la combo à la première ligne
    Combo1.ListIndex = 0
 
End Sub
 
Function WriteBack(ByVal szValue As String, ByVal LCID As Integer) As Byte
 
 Dim x2() As Byte
 Dim buffer() As Byte
 Dim buffer2() As Byte
 Dim I As Integer
 Dim J As Integer
 
 buffer = szValue
 
 If LCID = &H411 Then
 
     ReDim buffer2(UBound(buffer))
 
    ' buffer2 = StrConv(buffer, vbNarrow, LCID)
     buffer2 = StrConv(buffer2, vbFromUnicode, LCID)
 
     WriteBack = buffer2
 
 Else
     If szValue <> "" Then
 
         ReDim buffer2(UBound(buffer) / 2)
 
         'wieder in ANSI wandeln
         J = 0
         For I = 0 To UBound(buffer) Step 2
         buffer2(J) = buffer(I)
         J = J + 1
         Next
         'x2 = StrConv(buffer, vbUnicode)
         x2 = StrConv(buffer2, vbUnicode)
 
         WriteBack = x2
    Else
         WriteBack = ""
    End If
    'Debug.Print "Write:"
    'For I = 0 To UBound(x2)
    'Debug.Print x2(I)
    'Next
 End If
 
 End Function
Balises code grâcieusement offerte par AlainTech
Merci d'y penser à l'avenir