VB6 string in een *.ini bestand schrijven probleem

Status
Niet open voor verdere reacties.

murdoch201

Gebruiker
Lid geworden
31 mei 2008
Berichten
336
Hoi,

wanneer ik in VB6 een string met de inhoud "5012933097817594" in een ini met als value exist=1 laat schrijven krijg ik dit in de ini:

Code:
[[[[5012933097817594]]]]
exist=1

hoe kan dit nu? het gebeurt alleen met deze string, ook als de string een andere inhoud bevat. bv. "alej204kzl503k".

dit is mijn code (er zit natuurlijk nog veel meer in die sub, maar ik heb dit er even uitgehaald):


Code:
Dim itemcode As String
WriteIniValue ("codes.ini"), itemcode, "exist", "1"

en dit is het bas bestand van de WriteIniValue functie:
Code:
Option Explicit

Public Function WriteIniValue(INIpath As String, PutKey As String, PutVariable As String, PutValue As String)
Dim Temp As String
Dim LcaseTemp As String
Dim ReadKey As String
Dim ReadVariable As String
Dim LOKEY As Integer
Dim HIKEY As Integer
Dim KEYLEN As Integer
Dim VAR As Integer
Dim VARENDOFLINE As Integer
Dim NF As Integer
Dim X As Integer

INIpath = App.Path & "\" & INIpath

AssignVariables:
    NF = FreeFile
    ReadKey = vbCrLf & "[" & LCase$(PutKey) & "]" & Chr$(13)
    KEYLEN = Len(ReadKey)
    ReadVariable = Chr$(10) & LCase$(PutVariable) & "="
        
EnsureFileExists:
    Open INIpath For Binary As NF
    Close NF
    SetAttr INIpath, vbArchive
    
LoadFile:
    Open INIpath For Input As NF
    Temp = Input$(LOF(NF), NF)
    Temp = vbCrLf & Temp & "[]"
    Close NF
    LcaseTemp = LCase$(Temp)
    
LogicMenu:
    LOKEY = InStr(LcaseTemp, ReadKey)
    If LOKEY = 0 Then GoTo AddKey:
    HIKEY = InStr(LOKEY + KEYLEN, LcaseTemp, "[")
    VAR = InStr(LOKEY, LcaseTemp, ReadVariable)
    If VAR > HIKEY Or VAR < LOKEY Then GoTo AddVariable:
    GoTo RenewVariable:
    
AddKey:
        Temp = Left$(Temp, Len(Temp) - 2)
        Temp = Temp & vbCrLf & vbCrLf & "[" & PutKey & "]" & vbCrLf & PutVariable & "=" & PutValue
        GoTo TrimFinalString:
        
AddVariable:
        Temp = Left$(Temp, Len(Temp) - 2)
        Temp = Left$(Temp, LOKEY + KEYLEN) & PutVariable & "=" & PutValue & vbCrLf & Mid$(Temp, LOKEY + KEYLEN + 1)
        GoTo TrimFinalString:
        
RenewVariable:
        Temp = Left$(Temp, Len(Temp) - 2)
        VARENDOFLINE = InStr(VAR, Temp, Chr$(13))
        Temp = Left$(Temp, VAR) & PutVariable & "=" & PutValue & Mid$(Temp, VARENDOFLINE)
        GoTo TrimFinalString:

TrimFinalString:
        Temp = Mid$(Temp, 2)
        Do Until InStr(Temp, vbCrLf & vbCrLf & vbCrLf) = 0
        Temp = Replace(Temp, vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrLf)
        Loop
    
        Do Until Right$(Temp, 1) > Chr$(13)
        Temp = Left$(Temp, Len(Temp) - 1)
        Loop
    
        Do Until Left$(Temp, 1) > Chr$(13)
        Temp = Mid$(Temp, 2)
        Loop
    
OutputAmendedINIFile:
        Open INIpath For Output As NF
        Print #NF, Temp
        Close NF
    
End Function
 
Ah, de oude ini handle script. Je gebruikt m zo:
Code:
'WriteIniValue "file.ini", "NaamVanDeSectie", "NaamVanDeKey", "WaardeVanDeKey"
Je INI bestand moet zowiezo al de sectie-waarde hebben. Als het er bv. zo uitziet:
[Algemeen]
iets=ietsanders
foo=42

[Moar]
leet=omgwtf1337
en je wilt data bij 'algemeen' erbij, dan gebruik je zoiets:
Code:
WriteIniValue "file.ini", "Algemeen", "exists", "1"
en dan krijg je
[Algemeen]
iets=ietsanders
foo=42
exists=1

[Moar]
leet=omgwtf1337


:thumb:
 
Laatst bewerkt:
jaja, maar ik wil hem niet onder "algemeen" maar onder itemcode, en dat blijkt dus niet te lukken
 
okay, maar 'cast' je het wel eerst naar String? Het kan zijn dat het script geen integers accepteerd.
 
Ik weet van geen casten af :eek:

EDIT: als je bedoelt met iets plaatsen in de string: ja, dat heb ik gedaan.

en volgens mij word mijn probleem ook niet goed gelezen:

hoe kan dit nu? het gebeurt alleen met deze string, ook als de string een andere inhoud bevat. bv. "alej204kzl503k".
 
Laatst bewerkt:
ik heb nog iets ondekt..
nu heb ik dit gedaan:
Text8.Text = itemcode
WriteIniValue ("codes.ini"), Text8.Text, "exist", "1"

en dan krijg ik dit:
error: invalid procedure or argument

en nadat ik op debug heb geklikt word deze lijn geel in de writeinivalue bas module:
Temp = Left$(Temp, VAR) & PutVariable & "=" & PutValue & Mid$(Temp, VARENDOFLINE)
 
Hmm, volgens mij vragen we langs elkaar heen.
1. hoe ziet je .ini er in het begin uit?
2. welke code gebruik je (wat is de variabele itemcode?)
3. wat is je verwachtte uitkomst?​


:thumb:
 
1. zo ziet mijn ini er eerst uit:
Code:
[ajslrjktylsma]
exist=0
item=50

2. welke code? ehh, gewoon wat gebrabbel van lettertjes in een string
Code:
ajslrjktylsma

3. mijn verwachtte uitkomst:
Code:
[ajslrjktylsma]
exist=1
item=50
 
vraag = opgelost

ik heb een andere Read/write ini module voor VB6 gedownload, werkt perfect :)
Voor de mensen die dit probleem ook hebben: De module die jullie gebruiken bevat bugs. zoek een andere, pas hem wat aan en hij zal werken ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan