FBVLV
Messages postés5Date d'inscriptionlundi 11 décembre 2000StatutMembreDernière intervention 5 mars 2009
-
5 mars 2009 à 17:56
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
8 mars 2009 à 03:09
Bonjour,
Je souhaite afficher dans un label une description récupérée dans un fichier MonFichier.cfg ayant, en gros, cette forme :
[VinsDisponibles]
Entrée= Alsace
PlatPrincipal=Bougogne
Dessert=Champagne
Commentaires=L'adéquation du vin avec le plat est indispensable.
Je n'ai aucun problème pour récupérer la valeur "L'adéquation du vin avec le plat est indispensable."
Pour cela j'utilise les conseils donnée pour ouvrir un fichier ini.
Mais, à partir d'une certaine longueur, le Commentaire est tronqué dans le Label.
Pour être plus clair, si Commentaire = L'adéquation du vin, tout s'affiche sans problèmes,
mais lorsque Commentaire =L'adéquation du vin avec le plat est indispensable.
seul " l'adéquation du vin est in " s'affiche
Naturellement j'ai dimensioné mon label de façon à ce qu'il soit largement supérieur à la longueur de la valeur que je veux afficher.
Pour votre information j'ai exactement le même problème si je remplace le label par un TextBox.
Le problème ne viendrait-il pas alors de la manière d'aller chercher l'information dans le fichier .cfg ? Le buffer limité à 255 ?
A titre d'information voici les extraits du code que j'utilise :
Module ModuleLireEcrireIni
Public Class Cls_Ini
Contenu du module
'Declaration API pour lire le fichier ini
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 Integer, _
ByVal lpFileName As String) As Integer
'Declaration API pour ecrire le fichier 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 Integer
'chemin du fichier INI
Public Path As String
'fonction qui retourne la chaine selon la '[SECTION]' et la 'CLE ='
Public Function GetValue(ByVal sSection As String, ByVal sKey As String) As String
'buffer
Dim Buffer As New System.Text.StringBuilder(255)
Buffer.Append(" ", 255)
Dim sRet As String = Buffer.ToString
Buffer.Length = 0
'retour API
Dim iRet As Integer = GetPrivateProfileString(sSection, sKey, "", sRet, sRet.Length, Me.Path)
'retour fonction
Return sRet.Substring(0, iRet)
End Function
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 6 mars 2009 à 00:42
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
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 6 mars 2009 à 18:36
Bonjour,
Juste une question qui certainement stupide de ma part :) mais je la pose quand meme !
pourquoi utilise tu une class spécial pour lire un fichier INI ?
La class Streamreader ne suffirait il pas simplement, ? (pour la lecture)
et la class StreamWriter pour l'ecriture ?
voici un exemple auquel je pense
_______________________________________
Imports System.IO
Public Class Form1
Public Function ReadIni(ByVal val As String)
Dim iniFile As New StreamReader("Monfichier.ini", System.Text.ASCIIEncoding.UTF7)
Do Until iniFile.Peek = -1
Dim v As String = iniFile.ReadLine
If v.IndexOf(val) >= 0 Then
Return v.Remove(0, val.Length + 1)
End If
Loop
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Console.WriteLine(ReadIni("Commentaires"))
End Sub
End Class
_____________________________________________
bien sur dans l'état actuel ça demande encore des améliorations puis ça sers a rien de me casser la tete si ça plais pas :) si ça plais je pourrais continué !
Cordialement,
Vous n’avez pas trouvé la réponse que vous recherchez ?
troxsa
Messages postés553Date d'inscriptionjeudi 28 novembre 2002StatutMembreDernière intervention 2 octobre 20161 6 mars 2009 à 19:32
Salut,
j'aime bien la contradiction que tu te fais toi même :)
or ces API n'en ont aucune = INI en a oui (donc elles n'ont aucune lacune )
je pense le contraire, les API on beaucoup de lacune et beaucoup de défaut effectivement certaine n'ont on pas !
je pense néanmoins a l'outil de développent Visual Studio, si les API étais aussi parfaite que tu le dis on travaillerais encore avec VB6 ...
Effectivement en .net il est recommander de travailler avec du XML et d'oublier l'INI, de plus Microsoft le dis clairement ...
Enfin bon je donne juste un avis sur le fil et je cherche pas a me prendre la tête ...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 8 mars 2009 à 03:09
pas de problème, mais mon message ne faisait pas de comparaison entre vb6 et vb.net
la STRUCTURE du fichier ini est faite d'une manière (sur certains points discutable)
son CONTENU est accessible par des API, sans erreur ni équivoque, donc aucune raison de de pas utiliser ces api
aucune contradiction, aucun rapport au langage utilisant le fichier final
<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp