IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Cyrillique dans une textbox


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Cyrillique dans une textbox
    Bonjour,

    J'aurais besoin d'aide pour un programme que je développe

    Mon problème : Je n'arrive pas à afficher de cyrillique dans une textbox. La phrase en cyrillique ayant été extraite d'un fichier .txt encodé en Unicode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'Mon code
    Private Sub Command1_Click()
     
    Dim f
    Dim Ligne As String
    f = FreeFile()
    Open "C:\Documents and Settings\Administrator\Desktop\Russe.txt" For Binary As #f
    Input #f, Ligne
    Text1 = Ligne
    Close #f
     
    End Sub
    Un peu plus de détails pour ceux que ca intéresse ...

    Je suis sous XP. Le programme que je développe doit fonctionner sous XP et Seven ...

    Le changement de langue du programme était géré par un fichier .txt encodé en ANSI jusqu'à ce que je sois bloqué par l'insertion du cyrillique. Maintenant je pense me tourner vers de l'Unicode ou du UTF-8.

    Format du fichier :
    Langue 1;Mot1;Mot2;Mot3 ...
    Langue 2; ....

    Ce n'est surement pas la meilleur façon mais c'est la seule à laquelle j'ai pensé sur le coup (et qui soit à ma portée ^^")

    Principe :
    - L'utilisateur choisi sa langue dans le programme et valide son choix
    - J'ouvre mon fichier .txt et je trouve la ligne qui correspond à la langue choisie (1 ligne par langue avec des ";" entre chaque mot/phrase)
    - Je split la ligne récupérée grâce à ses séparateurs (";") pour obtenir un tableau dans lequel je viens piocher mes mots/phrases.
    - Je ferme le fichier .txt et rafraichi toute les zones de texte du programme.

    Fonctionne très bien pour l'anglais et le français ... pose des problèmes pour l'insertion du Russe et de son alphabet cyrillique.

    Avec le code ci-dessus, j'affiche "ÿþ4@02AB2C9B5!" dans la textbox au lieu de "Здравствуйте!", même en ayant mis la police de la textbox en cyrillique.

    Donc si quelqu'un peut m'aider ... parce que la, je mouline ... surtout que je me demande si je ne prends pas le problème à l'envers (par exemple, une variable String peut-elle gérer du cyrillique ?)

    Merci,

    Saiylar

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 187
    Points
    17 187
    Par défaut
    Salut
    En VB6, je ne connais qu'un seul composant qui puisse afficher des caractères de code ascii supérieur à 255, un MSHFlexGrid (Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB).
    Sur un Form 1 MSHFlexGrid et ce
    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
    Option Explicit
     
    Public Sub Demo()
    Dim T As Integer
    Dim ValDec As Long
    Dim LeMot As String
    Dim Result As String
    Dim ChaqueCaractere() As String
     
    ' le mot en russe codé unicode
    '        042D 0414 0440 0430 0432 0441 0442 0432 0443 0439 0442 0435 0021
    LeMot = "042D 0414 0440 0430 0432 0441 0442 0432 0443 0439 0442 0435 0021"
     
     
    ChaqueCaractere = Split(LeMot, " ")
    For T = 1 To UBound(ChaqueCaractere)
        ValDec = CDbl("&H" & ChaqueCaractere(T))
        If ValDec > 255 Then
            Result = Result & ChrW(ValDec)
            Else
            Result = Result & Chr(ValDec)
        End If
    Next
    MSHFlexGrid1.TextMatrix(0, 0) = Result
     
     
    'un mot que tu pourras traduire à l'occasion
    LeMot = "000D 000A 0420 0435 0448 0435 043D 0438 0435 0020 003F"
     
    Result = ""
    ChaqueCaractere = Split(LeMot, " ")
    For T = 1 To UBound(ChaqueCaractere)
        ValDec = CDbl("&H" & ChaqueCaractere(T))
        If ValDec > 255 Then
            Result = Result & ChrW(ValDec)
            Else
            Result = Result & Chr(ValDec)
        End If
    Next
    MSHFlexGrid1.TextMatrix(0, 0) = MSHFlexGrid1.TextMatrix(0, 0) & Result
     
    End Sub
     
    Private Sub Form_Load()
    Me.Height = 2250: Me.Width = 5385
     
    MSHFlexGrid1.Move 60, 60, 5000, 1550
    MSHFlexGrid1.Cols = 1
    MSHFlexGrid1.FixedCols = 0
    MSHFlexGrid1.Rows = 1
    MSHFlexGrid1.FixedRows = 0
    MSHFlexGrid1.GridLines = flexGridNone
    MSHFlexGrid1.Font.Name = "MS sans serif"
    MSHFlexGrid1.Font = "MS sans serif"
    MSHFlexGrid1.Font.Size = 28
    MSHFlexGrid1.ColWidth(0) = 5000
    MSHFlexGrid1.RowHeight(0) = 1500
    MSHFlexGrid1.WordWrap = True
    Demo
    End Sub
    Je te confirme qu'une variable de type string ne peut pas contenir de caractères code ascii supérieur à 255, ils sont remplacés par 63 soit le point interrogation.


    Motif de l’édit
    Je te confirme qu'une variable de type string ne peut pas contenir de caractères code ascii supérieur à 255, ils sont remplacés par 63 soit le point interrogation.
    Contradictoire, car le code proposé utilise une variable string .
    En fait si on utilise Debug.Print ou un copier/coller d'un mot contenant des caractères de code ascii supérieur à 255 d'un conteneur qui lui les accepte, le conteneur cible ne les supportant pas va afficher des ????.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    En fait si on utilise Debug.Print ou un copier/coller d'un mot contenant des caractères de code ascii supérieur à 255 d'un conteneur qui lui les accepte, le conteneur cible ne les supportant pas va afficher des ????.
    Tout à fait.

    Avec quelques manipulations, on peut y arriver mais seulement en écriture directe ou un copier/coller à partir d'un autre programme. Cela consiste à suivre les étapes suivantes :
    1 - Panneau de configuration
    2 - Options régionales et linguistiques
    3 - onglet Langues
    4 - bouton Détails...
    5 - bouton Ajouter...
    6 - Choisir Russe pour Langue d'entrée et Configuration Clavier/IME
    7 - OK ; Appliquer et Appliquer (pour les différentes boites)

    Par la suite Ouvrir VB6 et placer un contrôle TextBox sur Form1.

    Dans la fenêtre de propriétés du TextBox, choisir Font puis la police Arial et dans le menu

    déroulant Script, choisir Cyrillique.

    Activer la barre des langues pour qu'elle soit visible dans la barre des tâches

    Lancer l'exécution de projet1 et basculer vers Russe(Alt+Maj si configuré de la sorte)

    Taper n'importe quel mot : Les caractères sont en russe.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Affichage dans une textbox
    Par philo71 dans le forum MFC
    Réponses: 25
    Dernier message: 30/01/2006, 09h34
  2. [VB]Problème d'effacement dans une TextBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 24/01/2006, 17h55
  3. [Javascript] appui sur la touche entrée dans une textbox
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 11h19
  4. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39
  5. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo