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

Windows Forms Discussion :

[VB.Net Vb2008] left sur un long


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut [VB.Net Vb2008] left sur un long
    Salut,

    j'ai récupérer un code pour lire dans un fichier (.ini) qui nécessite de faire un left avec comme longueur, un long... => exception puisque left ne permet qu'une longueur integer...

    Voici le code du module:
    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
     
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Short, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
    Function LireINI(ByVal pEntete As String, ByVal pVariable As String, ByVal pFic As String) As String
     
       Dim l_szRetour As String
       Dim l_lRetour As Long
       If Dir(pFic) = "" Then
           MsgBox("Fichier introuvable")
           LireINI = "0"
       Else
           l_szRetour = Space$(255)
           l_lRetour = GetPrivateProfileString(pEntete, pVariable, "Error", l_szRetour, 255, pFic)
           LireINI = Strings.Left$(l_szRetour, l_lRetour)   ' l'erreur ici
       End If
     
    End Function
    j'ai essayé de remplacer Strings.Left$ par left$ et left, mais le problème est le même...
    je ne vois pas comment contourner le problème, alors si vous avez de la lumière... même si vous avez une autre façon de le faire, je prends...
    Merci d'avance.
    6ril25



    "Par trois méthodes nous pouvons apprendre la sagesse : d'abord, par la réflexion qui est la plus noble; en second lieu, par l'imitation, qui est la plus facile; et troisième, par l'expérience, qui est la plus amère." Confucius

  2. #2
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    J'ai un code pour lire des sections INI.... A toi de lire et analyser ca...

    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
     
     
    #Region "Lire INI"
     
        Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
        '   Cette API permet de lire des fichiers d'initialisations. La fonction retourne 0 si la lecture du fichier d'initialisation a échoué, sinon elle retourne 1. 
        'lpApplicationName définit le nom de la section, 
        'lpKeyName définit le nom de la clef, 
        'lpDefault retourne la valeur par défaut si la clef n'est pas définie, 
        'lpReturnedString contient la valeur de la clef si elle existe sinon elle contient la valeur lpDefault, 
        'nSize est la taille de la variable lpReturnedString en octet, 
        'lpFileName définit le nom du fichier d'initialisation. 
        Function LireINI(ByVal Entete As String, ByVal Variable As String) As String
            Dim defval As String = ""
            Try
                Dim StrBuild As New System.Text.StringBuilder(MAX_ENTRY)
                Dim Ret As Integer = GetPrivateProfileString(Entete, Variable, defval, StrBuild, MAX_ENTRY, Fichier)
                Return StrBuild.ToString
            Catch
                Return defval
            End Try
        End Function
    #End Region
     
    #Region "Ecrire INI"
        Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
        '   Cette API permet de créer ou de modifier vos propres fichiers d'initialisations sans se soucier des détails (par exemple... la gestion des fichiers), si le fichier n'existe pas il est créé, sinon il est modifié. La fonction retourne 0 si la création ou la modification du fichier d'initialisation a échoué, sinon elle retourne 1. 
        'lpApplicationName définit le nom de la section, 
        'lpKeyName définit le nom de la clef, 
        'lpString définit la valeur à ajouter, 
        'lpFileName définit le nom du fichier d'initialisation. 
     
        Public Sub EcrireINI(ByVal Entete As String, ByVal Variable As String, ByVal Valeur As String)
            WritePrivateProfileString(Entete, Variable, Valeur, Fichier)
        End Sub
     
    #End Region
     
    #Region "Supprime INI"
        Public Sub SupprimeINI(ByVal Entete As String, Optional ByVal Variable As String = Nothing)
            WritePrivateProfileString(Entete, Variable, vbNullString, Fichier)
        End Sub
    #End Region
     
    #Region "Sections INI"
        Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer() As Byte, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
        Function SectionsINI() As ArrayList
            SectionsINI = New ArrayList
            Dim Buffer(MAX_ENTRY) As Byte
            Dim BuffStr As String
            Dim PrevPos As Integer = 0
            Dim Length As Integer
            Try
                Length = GetPrivateProfileSectionNames(Buffer, MAX_ENTRY, Fichier)
            Catch
                Exit Function
            End Try
            Dim ASCII As New System.Text.ASCIIEncoding
            If Length > 0 Then
                BuffStr = ASCII.GetString(Buffer)
                Length = 0
                PrevPos = -1
                Do
                    Length = BuffStr.IndexOf(ControlChars.NullChar, PrevPos + 1)
                    If Length - PrevPos = 1 OrElse Length = -1 Then Exit Do
                    Try
                        SectionsINI.Add(BuffStr.Substring(PrevPos + 1, Length - PrevPos))
                    Catch
                    End Try
                    PrevPos = Length
                Loop
            End If
        End Function
    #End Region
    Peut être que ces lignes t'aideront!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    503
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 503
    Points : 503
    Points
    503
    Par défaut
    Bonjour et merci pour la réponse.

    J'ai intégré ton code, et ça fonctionne à merveille.
    merci
    6ril25



    "Par trois méthodes nous pouvons apprendre la sagesse : d'abord, par la réflexion qui est la plus noble; en second lieu, par l'imitation, qui est la plus facile; et troisième, par l'expérience, qui est la plus amère." Confucius

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.net] Bug submit sur champ de saisie
    Par addicts dans le forum ASP.NET
    Réponses: 8
    Dernier message: 12/07/2006, 10h57
  2. [VB.NET] Erreur OnMouseUp sur Datagrid
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/01/2005, 10h26
  3. [VB.NET] Connexion distante sur serveur UNIX
    Par Toftof dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/06/2004, 17h18
  4. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

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