Avatar billede neeo Nybegynder
08. juni 2006 - 13:15 Der er 18 kommentarer og
2 løsninger

indlæsning af komma sep fil

hey.

har en værdi F som ser således ud.

F = navn,værdi,true,false,true,,,,false,,,,,,false
men vil gerne have at kun indtil første komma var f

DVS :
F = navn
og måske
G = værdi

hvordan er det nu i vb6 man konvetere sådan en streng ?
Avatar billede neeo Nybegynder
08. juni 2006 - 13:29 #1
jeg kan bruge split men den fungere ikke optimalt
Avatar billede neeo Nybegynder
08. juni 2006 - 13:33 #2
For i = LBound(aPackage) To UBound(aPackage)
            x = Replace(aPackage(i), Chr(9), ",")
            x = Split(x, ",", -1, vbTextCompare)   
            'her kommer x til at se sådan ud : navn,værdi,,,false,,,,tru,,,,
            'det ønskede er så at f bliver  f = navn

        Next
Avatar billede neeo Nybegynder
08. juni 2006 - 13:36 #3
med det virker ikke :(
Avatar billede rynke10 Novice
08. juni 2006 - 16:11 #4
Prøv det her. Tror der er ged i dit array. Du kan altid læse værdierne ind i de variabler du har lyst til. Jeg har sat en if for at fjerne de tomme værdier, men den kan du fjerne.
sæt en knap og en list på din form og prøv ;-)

Option Explicit

Private Sub Command1_Click()

Dim tekstsplitarray() As String
Dim i As Integer
Dim mintekst As String

mintekst = "navn,værdi,true,false,true,,,,false,,,,,,false"
tekstsplitarray = Split(mintekst, ",", -1, vbTextCompare)
 
  For i = 0 To UBound(tekstsplitarray)
    If tekstsplitarray(i) <> "" Then
      List1.AddItem tekstsplitarray(i)
    End If
  Next
       
End Sub
Avatar billede rynke10 Novice
08. juni 2006 - 16:18 #5
Når du skriver :
x = Split(x, ",", -1, vbTextCompare) 
Så går det galt. Det du splitter skal være en string og det du splitter den over i, altså de forskellige værdier, skal være et array.

Så kan du istedet for skrive
F = tekstsplitarray(0)
G = tekstsplitarray(1)
Avatar billede bak Forsker
08. juni 2006 - 17:05 #6
sådan kan det gøres

Dim x As Variant
For i = LBound(aPackage) To UBound(aPackage)
      x = Split(aPackage, ",", -1, vbTextCompare)
      Debug.Print x(0)    'print navnet
Next


Bemærk a X skal være en variant og efter splittet vil X være som et array hvor x(0) er navn, x(1) er værdi osv.
Avatar billede bak Forsker
08. juni 2006 - 17:06 #7
Dim x As Variant
For i = LBound(aPackage) To UBound(aPackage)
      x = Split(aPackage(i), ",", -1, vbTextCompare)
      Debug.Print x(0)    'print navnet
Next
Avatar billede neeo Nybegynder
09. juni 2006 - 09:17 #8
jamen hvad er det jeg gøre galt i første sætning...
Avatar billede martin_moth Mester
09. juni 2006 - 10:11 #9
Avatar billede neeo Nybegynder
09. juni 2006 - 10:11 #10
rynke10 og bak kunne i ikke sende et svar ind
Avatar billede rynke10 Novice
09. juni 2006 - 10:18 #11
bak, virker det?
Det du skal splitte skal være en string, et array er jo allerede opdelt. Det du splitter det op i er et array, så kan du tildele værdien af din F G o.s.v. fra de forskellige pladser i arrayet.
Avatar billede bak Forsker
10. juni 2006 - 01:18 #12
Yes, Det virker :-)

Hvis man kun ønsker at F bliver omdannet så:

F = Split(F, ",", -1, vbTextCompare)(0)
Avatar billede bak Forsker
10. juni 2006 - 01:19 #13
svar:-)
Avatar billede rynke10 Novice
10. juni 2006 - 06:10 #14
Jeg var ikke klar over at man kunne bruge split på et array, det giver nemlig fejl hos mig ;-)
Avatar billede bak Forsker
10. juni 2006 - 14:35 #15
Jeg betragter det ikke som et array men som en streng.
Avatar billede rynke10 Novice
10. juni 2006 - 15:49 #16
Du skriver:

For i = LBound(aPackage) To UBound(aPackage)
      x = Split(aPackage, ",", -1, vbTextCompare)

Når du bruger LBound på aPackage, så må det da være et array?
Avatar billede bak Forsker
10. juni 2006 - 16:55 #17
Du skal se på eksempel nr 2. 1 var en fejlafskrivning af neeo's.
Jeg går ud fra at han læser hele textfilen ind i et array (package) linie for linie som tekststrenge. Hver af disse tekststrenge ønsker han så bagefter at splitte ved kommaerne.


Dim x As Variant
'package som et array af stekstrenge, altså hver linie for sig.
For i = LBound(aPackage) To UBound(aPackage)
      'tag hver enkelt streng og split den.
      x = Split(aPackage(i), ",", -1, vbTextCompare)
      'uddrag 1 og 6 del af x, hvor x er en variantarray
      Debug.Print x(0), x(6)    'print navnet
Next
Avatar billede rynke10 Novice
10. juni 2006 - 17:09 #18
Så er jeg mere med ;-)
Undskyld forvirringen
Avatar billede bak Forsker
10. juni 2006 - 17:13 #19
Det er helt iorden :-)
Avatar billede neeo Nybegynder
19. juni 2006 - 11:09 #20
tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester