Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Läsa in inifil till combobox

Postades av 2004-12-09 14:31:58 - Bo Wernersson, i forum visual basic - allmänt, Tråden har 9 Kommentarer och lästs av 591 personer

Nu har jag stött på problem idag läser jag in en textfil i comboboxen med följande kod.

Open App.Path & "\test.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, temp
ant = Len(temp)
If ant > 4 Or Not IsNull(temp) Or Not IsEmpty(temp) Then
lword = Left(temp, (ant - 1))
Combo1.AddItem lword
End If
Loop
Close #1

Det är ju från en textfil med bara ett värde per rad och inga grupperingar.
Nu skulle jag vilja läsa in samma värden fast i inifilsformat. se nedan

[331815]
2314=40
332315=557
54682316=5000

Det jag skall lägga in i comboboxen beror på det inom hakparanteserna samt fram till = tecknet och där har jag kört fast. Någon som har en lösning?

/Bosse


Svara

Sv: Läsa in inifil till combobox

Postades av 2004-12-09 15:52:42 - Åsa Holmgren

Jag är inte helt säker på vad du vill ha i comboboxen, men låt säga att det som står efter likamed-tecknet ska synas i lista och det som står före ska vara ItemData:

Gör om inifilen så att den har en löpande numrering:

[331815]
1=2314;40
2=332315;557
3=54682316;5000

Option Explicit

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
    "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Long, _
    ByVal lpFileName As String) As Long

Private Function GetStringFromIni(ByVal vsIniFile As String, _
    ByVal vsSection As String, ByVal vsKey As String) As String
    
    Dim sBuffer As String
    Dim lRet As Long

    sBuffer = Space(1024)
    lRet = GetPrivateProfileString(vsSection, vsKey, "", sBuffer, _
        Len(sBuffer), vsIniFile)

    GetStringFromIni = Left$(sBuffer, lRet)
End Function

Private Sub FillComboFromIni()
    Dim sIniFile As String
    Dim sTmp As String
    Dim lIdx As Long
    Dim vnt as Variant

    sIniFile = "D:\Testa\MittProgram.ini"
    lIdx = 1

        ' Läs in första raden i avsnittet
    sTmp = GetStringFromIni(sIniFile, "331815", "1")

    Do While sTmp <> ""
            ' Dela upp strängen, resultatet hamnar i arrayen vnt
        vnt = Split(vnt, ";")

        If UBound(vnt) = 1 Then
            With Me.cboTest
                .AddItem vnt(1)
                .ItemData(.NewIndex) = vnt(0)
            End With
        End If

            ' Fortsätt att läsa in så länge det finns rader i avsnittet
        lIdx = lIdx + 1
        sTmp = GetStringFromIni(sIniFile, "331815", CStr(lIdx))
    Loop
End Sub


Svara

Sv:Läsa in inifil till combobox

Postades av 2004-12-09 16:05:39 - Bo Wernersson

Problemet med den lösningen är att jag skall läsa samma data fast det som är efter = tecknet. Och det läser jag med följande kod.

sR = ReadINIString("331815", "2314", "Default")
Text4.Text = sR

Det jag vill ha i comboboxen är det värde som står före = tecknet, det blir även svårt att få numrering då jag läser ut datan. Men jag skall spara ditt förslag det kan vara användbart vid ett annat tillfälle.

Mvh Bosse


Svara

Sv: Läsa in inifil till combobox

Postades av 2004-12-09 16:53:32 - Sven Åke Persson

Så här löser jag det
<code>
Option Explicit
Private Sub Command1_Click()
Dim iniArray() As String
Dim tmpStr As String
Dim FNum As Long
FNum = FreeFile
Open App.Path & "\test.ini" For Input As #Fnum
On Error Resume Next
Do Until EOF(FNum)
Line Input #FNum, tmpStr
iniArray = Split(tmpStr, "=")
' innehåller allt före "="
Combo1.AddItem iniArray(0)
'vill du ha allt efter = så blir det
' Combo1.AddItem iniArray(1)
Loop
Close #FNum
End Sub
</code>
Kom igen om det skall förfinas


Svara

Sv:Läsa in inifil till combobox

Postades av 2004-12-09 17:20:26 - Bo Wernersson

Fungerade perfekt, precis vad jag sökte. Finns det någon möjlighet att styra vilken sektion den skall läsa ? annars får jag lägga allt i en rad det går ju fast det blir mycket att välja bland. Filen jag läser från ser ut som nedan det vore förnämligt om man kunde läsa tex bara sektion [331814] det som står före =tecknet.

[331814]
5698=30
2568=25000

[331815]
2314=40
2315=55
2316=10

Men detta var en bra bit på väg.

Tusen tack för er hjälp
Bosse


Svara

Sv: Läsa in inifil till combobox

Postades av 2004-12-09 18:19:41 - Sven Åke Persson

Då skulle det kunna bli ungefär så här. Dom sk.experterna kommer att kräkas
därför att jag använder <b>GoTo NextTest</b> :-) Jag bryr mig icke, just här passar det.
<code>
Private Sub Command1_Click()
Dim iniArray() As String
Dim tmpStr As String
Dim checkStr As String
Dim FNum As Long
'här skriver du eller tar in dom som får vara med
checkStr = "[331814]"
FNum = FreeFile
Open App.Path & "\test.ini" For Input As #FNum
On Error Resume Next
Do Until EOF(FNum)
Line Input #FNum, tmpStr
If InStr(tmpStr, checkStr) Then
NextTest:
Line Input #FNum, tmpStr
If InStr(tmpStr, "=") Then
iniArray = Split(tmpStr, "=")
Combo1.AddItem iniArray(0) & "="
GoTo NextTest
End If
End If
Loop
Close #FNum
End Sub
</code>


Svara

Sv:Läsa in inifil till combobox

Postades av 2004-12-09 22:23:52 - Bo Wernersson

Får tyvärr inte detta att funka, programmet fryser och man får döda det den hårda vägen. Någon ide om vad det kan vara ?

/Bosse


Svara

Sv: Läsa in inifil till combobox

Postades av 2004-12-09 22:39:22 - Bo Wernersson

Det verkar som om det blir en evig loop för datorn ställer sig på 100% cpu ända till man dödat programmet.

/Bosse


Svara

Sv:Läsa in inifil till combobox

Postades av 2004-12-10 09:38:11 - Åsa Holmgren

OK, jag antar att du inte kan bestämma hur ini-filen ska se ut. Då får man köra en "fuling" som den SvenPon föreslår ;-)

Testa detta:

Sub FillCombo
    Dim sSection As String
    Dim sLine As String
    Dim lFile As Long
    Dim bSectionFound As Boolean
    Dim vnt As Variant
    
    sSection = "[331814]"
    lFile = FreeFile
    Open App.Path & "\test.ini" For Input As #lFile
        
        ' Går igenom rad för rad tills rätt avsnitt hittas
    Do Until EOF(lFile)
        Line Input #lFile, sLine
        If InStr(sLine, sSection) > 0 Then
            bSectionFound = True
            Exit Do
        End If
    Loop
    
        ' Läser in varje rad så länge de innehåller ett likamedtecken
    If bSectionFound Then
        Do Until EOF(lFile)
            Line Input #lFile, sLine
            If InStr(sLine, "=") > 0 Then
                vnt = Split(sLine, "=")
                Combo1.AddItem vnt(0)
            Else
                Exit Do
            End If
        Loop
    End If
    
    Close #lFile
End Sub


Svara

Sv: Läsa in inifil till combobox

Postades av 2004-12-10 10:03:22 - Sven Åke Persson

mmm :-) Bra lösning Åsa . Där ser man hur det kan gå om inte haspen är på.
Det funkade mot dom test inifiler jag testade på.
Om du kommer in i en sådan loop kommer du ur den med Break när du kör i designläge.
Funkar Åsa:s lösning ? Om inte får Vi ta en ny match.Man får aldrig ge sig.


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 718
27 958
271 751
3 233
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies