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][Fichier ini] utilisation des API


Sujet :

Windows Forms

  1. #1
    Membre régulier
    ingénieur informaticien
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 103
    Points
    103
    Par défaut [VB.Net][Fichier ini] utilisation des API
    Bonjour
    Je veux créer une classe qui communique avec des fichiers ini. Seulement les API que j'utilise ne fonctionnent pas correctement. Quelqu'un pourrait-il me donner un coup de main.

    Voici la déclaration des API en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Declare Function GetPrivateProfileSection Lib "kernel32.dll" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As string, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileSection Lib "kernel32.dll" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    A Donf

    Le souci c'est que là tu nous montre simplement la declaration des API donc quand tu nous dis
    Seulement les API que j'utilise ne fonctionnent pas correctement
    En consequence montres nous comment tu les utilises, et explique nous là où pour toi çà ne ""fonctionne" pas

    Si tu veux simplement verifier que les signatures utilisées sont correctes, en plus de MSDN tu as aussi http://www.pinvoke.net/ à ta disposition
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    en fait il me semble que les API que tu nous montre sont en fait des API de vb6.
    Car j'ai utilisé les même API lorsque je travvailler sur vc 6.0 ... et en .net ben ça fonctionne plus ... en fait : c'est pas que ça fonctionne pas c'est juste quelle n'existe plus dans la version .net et on été remplacer par une autre fonction .net sans doute
    Si tu trouve ça m'interesse aussi
    1 || 1 = 1
    1 && 1 = 1
    1 * 1 = 1
    Bon après tout, peut-être que Van Damme avait raison :
    1 + 1 = 1 // harmonie parfaite

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par ekinox17
    en fait il me semble que les API que tu nous montre sont en fait des API de vb6.
    Car j'ai utilisé les même API lorsque je travvailler sur vc 6.0 ... et en .net ben ça fonctionne plus ... en fait : c'est pas que ça fonctionne pas c'est juste quelle n'existe plus dans la version .net et on été remplacer par une autre fonction .net sans doute
    Si tu trouve ça m'interesse aussi
    Heu il vaudrait mieux que tu exploites le lien que j'ai mis au dessus et ainsi constater que ces API n'ont pas de lien specifique avec VB6 puisqu'encore utilisable, y compris en C#, ce sont des API Windows
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  5. #5
    Membre régulier
    ingénieur informaticien
    Inscrit en
    Novembre 2005
    Messages
    114
    Détails du profil
    Informations professionnelles :
    Activité : ingénieur informaticien

    Informations forums :
    Inscription : Novembre 2005
    Messages : 114
    Points : 103
    Points
    103
    Par défaut
    Merci pour le coup de main neguib , ce lien m'a été très utile. Voilà le résultat.

    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
    115
    116
     
    Imports System.Object
    Imports System.Runtime.InteropServices.Marshal
     
    Public Class ComINI
     
    Private Declare Function GetPrivateProfileSection Lib "kernel32.dll" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedBuffer As IntPtr, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
     
    Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As IntPtr, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
     
    Private Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedBuffer As IntPtr, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
     
    Private Declare Function WritePrivateProfileSection Lib "kernel32.dll" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
     
    'Retourne un booléen indiquant l'existance ou non d'une section    
    Public Function ExisteSection(ByVal File As String, ByVal Section As String) As Boolean
            Dim PtrCh As IntPtr
            Dim Lng As Integer
     
            PtrCh = StringToHGlobalAnsi(New String(vbNullChar, 1024))
            Lng = GetPrivateProfileSection(Section, PtrCh, 1024, File)
     
            Return Lng
    End Function
     
    'Retourne une collection contenant l'ensemble des sections du fichier "File"
    Public Function GetAllSections(ByVal File As String) As Collection
            Dim PtrCh As IntPtr
            Dim Sections As Collection
            Dim I, Lng As Integer
            Dim Chaine, SChaine As String
     
            PtrCh = StringToHGlobalAnsi(New String(vbNullChar, 1024))
            Lng = GetPrivateProfileSectionNames(PtrCh, 1024, File)
            Chaine = PtrToStringAnsi(PtrCh, Lng)
            FreeHGlobal(PtrCh)
     
            Sections = New Collection
            SChaine = ""
            For I = 0 To Lng - 1
                If Chaine.Chars(I) = vbNullChar Then
                    Sections.Add(SChaine)
                    SChaine = ""
                Else
                    SChaine = SChaine & Chaine.Chars(I)
                End If
            Next
            GetAllSections = Sections
            Sections = Nothing
    End Function
     
    'Retourne une collection contenant l'ensemble des clés de la section "Section" du fichier "File"
    Public Function GetSectionCles(ByVal File As String, ByVal Section As String) As Collection
            Dim PtrCh As IntPtr
            Dim Cles As Collection
            Dim I, Lng As Integer
            Dim Chaine, SChaine As String
     
            PtrCh = StringToHGlobalAnsi(New String(vbNullChar, 1024))
            Lng = GetPrivateProfileSection(Section, PtrCh, 1024, File)
            Chaine = PtrToStringAnsi(PtrCh, Lng)
            FreeHGlobal(PtrCh)
     
            Cles = New Collection
            SChaine = ""
            For I = 0 To Lng - 1
                If Chaine.Chars(I) = vbNullChar Then
                    Cles.Add(SChaine)
                    SChaine = ""
                Else
                    SChaine = SChaine & Chaine.Chars(I)
                End If
            Next
            GetSectionCles = Cles
            Cles = Nothing
    End Function
     
    'Retourne la valeur de la clé "Cle" de la section "Section" du fichier "File"
    Public Function GetCle(ByVal File As String, ByVal Section As String, ByVal Cle As String) As String
            Dim PtrCh As IntPtr
            Dim Lng As Integer
            Dim Chaine As String
     
            PtrCh = StringToHGlobalAnsi(New String(vbNullChar, 1024))
            Lng = GetPrivateProfileString(Section, Cle, "", PtrCh, 255, File)
            Chaine = PtrToStringAnsi(PtrCh, Lng)
            FreeHGlobal(PtrCh)
     
            GetCle = Chaine
    End Function
     
     
    'Insère une section dans le fichier "File"
    Public Function SetSection(ByVal File As String, ByVal Section As String, ByVal Valeur As String) As Boolean
            SetSection = WritePrivateProfileSection(Section, Valeur, File)
    End Function
     
    'Insère la clé "Cle" dans la section "Section" du fichier "File"
    Public Function SetCle(ByVal File As String, ByVal Section As String, ByVal Cle As String, ByVal Valeur As String) As Boolean
            SetCle = WritePrivateProfileString(Section, Cle, Valeur, File)
    End Function
     
     
    'Efface toute les clés de la section "Section"
    Public Function DelSection(ByVal File As String, ByVal Section As String) As Boolean
            DelSection = WritePrivateProfileSection(Section, "", File)
    End Function
     
    'Efface la valeur de la clé "Cle" de la section "Section"
    Public Function DelCle(ByVal File As String, ByVal Section As String, ByVal Cle As String) As Boolean
            DelCle = WritePrivateProfileString(Section, Cle, "", File)
    End Function
     
    End Class
    J'espere que ça pourra servir surtout pour toi ekinox17.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Exemple d'utilisation de cette classe INI ?
    Bonjour j'ai suivi ce thread car j'ai exactement les même nécessite, à savoir lister l'ensemble des sections d'un fichier INI et remplir une combobox avec.

    La classe que Donf viens de citer semble parfaite pour ce type d'utilisation, mais je suis débutant (vb 2008) et j'aurais besoin d'un exemple d'utilisation de cette classe.

    Comment en cliquant sur un bouton, je lit les section d'un fichier INI et je rempli une combobox avec le résultat ?

    Merci infiniment pour votre aide

    Gilles

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/09/2010, 11h05
  2. Utilisation des API .Net
    Par pc152 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2009, 11h25
  3. Utilisation des API .NET depuis Java ?
    Par yjuliet dans le forum VB.NET
    Réponses: 0
    Dernier message: 17/02/2009, 10h59
  4. [VB.NET] Fichier .ini ou .config ?
    Par toniolol dans le forum Windows Forms
    Réponses: 20
    Dernier message: 20/03/2006, 15h45
  5. Utilisation des API MySQL // ADO ou BDE ? (sujet 2)
    Par rohstev dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/11/2003, 10h50

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