Avatar billede entracore Nybegynder
26. februar 2003 - 13:51 Der er 16 kommentarer og
1 løsning

Skriv til Tekstfil

Hej

Jeg har et lille problem. Jeg her et "Array" jeg løber igennem og skriver så hver enkelt værdi ned i en tekstfil. Problemet er bare at informationerne står lidt hulter til bulter.

F.eks.

MyArray = "1, 2, 3, 4, Peter, Lars, Anders, Bo"

Det jeg gerne vil er at løbe igennem strengen så informationerne bliver skrevet i min tekst fil på følgende måde:

1 Peter
2 Lars
3 Anders
4 Bo

Hvordan gør jeg dette ???

På forhånd tak.
Avatar billede medions Nybegynder
26. februar 2003 - 14:04 #1
Open App.Path & "\\transauktioner.txt" For Output As #1
    Print #1, "Indbetalt: " & SaldoInd & " d." & Now()
print #1, Temp
Close #1

//>Rune
Avatar billede medions Nybegynder
26. februar 2003 - 14:06 #2
strStreng = ""
For i = 0 To UBound(MyArray)
  strStreng = strStreng & MyArray(i) & vbCrLf
Next

Open App.Path & "\\transauktioner.txt" For Output As #1
    Print #1, strStreng
print #1, Temp
Close #1

//>Rune
Avatar billede entracore Nybegynder
26. februar 2003 - 14:06 #3
Rune >> Det er vist ikke det jeg efterspørger ;-)
Avatar billede martin_moth Mester
26. februar 2003 - 14:27 #4
Du må først lave en procedure, der sorterer dit array ordentligt. For at du kan det, kræver det, at du ved hvilke pladser der skal stå hvor. Dkal første halvdel af arrayet parres med anden havldel - det ser sådan ud, men vil spørge først, så jeg ikke bruger tid på at lave en forkert løsning til dig :o)
Avatar billede martin_moth Mester
26. februar 2003 - 14:36 #5
PS: En supernem måde at løse det på (forudsat at myarray indeholder et lige antal poster)


HalvStørrelse = Ubound(MyArray+1) / 2

Open App.Path & "\transauktioner.txt" For Output As #1

For i = 0 To  HalvStørrelse - 1
  Temp= myArray(i)
  Temp = Temp & "  " &  myArray(halvstørrelse + i)
  print #1, Temp
Next

Close #1
Avatar billede martin_moth Mester
26. februar 2003 - 14:39 #6
Sorry - der skal stå:

  HalvStørrelse = (Ubound(MyArray)+1) / 2
Avatar billede entracore Nybegynder
26. februar 2003 - 14:54 #7
martin_moth >> Når jeg køre eksemplet vil jeg kune få det sidste værdier ud:

F.eks.

MyArray = Split("1, 2, 3, 4, Peter, Anders, Jon, Bo")
   
    HalvStorrelse = (UBound(MyArray) + 1) / 2

    For i = 0 To HalvStorrelse - 1
       
        Temp = MyArray(i)
        Temp = Temp & "  " & MyArray(HalvStorrelse + i)
       
    Next
    MsgBox Temp

Vil resultere i at Temp = 4, bo
Avatar billede entracore Nybegynder
26. februar 2003 - 15:03 #8
...og det er måske fordi at der skal stå:

Temp = Temp & MyArray(i)

istedet for:

Temp = MyArray(i)

:-)
Avatar billede entracore Nybegynder
26. februar 2003 - 15:07 #9
Men hvad så hvis tilfældet er at MyArray Både nummer navn og postnummer.

F.eks.

MyArray = Split("1, 2, 3, 4, Peter, Anders, Jon, Bo, PostNr1, PostNr2, PostNr3, PostNr4")

Kan der laves noget generelt så koden kan håndtere flere forskellige antal værdier ?
Avatar billede martin_moth Mester
26. februar 2003 - 15:08 #10
Det er fordi du har lavet om på min løsning - jeg skriver Temp til filen for hvert loop. Du skal IKKE ændrer til Temp = Temp & MyArray(i), men bare bruge min koden som den står
Avatar billede entracore Nybegynder
26. februar 2003 - 15:14 #11
martin_moth >> Det er korrekt... men det løser ikke problemet hvis man tilføjer flere værdisæt... f.eks. postnumre eller byer for hvert enkelt navn ???
Avatar billede martin_moth Mester
26. februar 2003 - 15:18 #12
Hvad med at lave et ordentligt array, hvor tingene ikke står hulter til bulter? Fx. ved brug af brugerdefinerede typer

Men "JA", du kan sagtens ændrer det. Min kode deler jo et array op i 2, og skriver første halvdel parret med anden halvdel, præcis som du spørger om.

Om du deler det op i 2 halvdele, 3 trediedele eller 27 syvogtyvendedele er ligemeget - det er bare at ændre lidt i loopet - du han evt. lægge koden i en procedure, og så kalde proceduren med en parameter, der angiver, hvor mande dele arrayet skal deles om i :o)
Avatar billede martin_moth Mester
26. februar 2003 - 15:23 #13
PS: Brug "," som delimiter i din split-funktion, så slipper du for alle de kommaer (med mindre du gerne vil have dem med :o)
Avatar billede entracore Nybegynder
26. februar 2003 - 15:29 #14
Yes Martin_Moth - mange tak for hjælpen :-)
Avatar billede martin_moth Mester
26. februar 2003 - 15:30 #15
Alternativt løsning:

Du har et array med X slagt felter (fx. navn, by og postnummer, dvs. X=3)
Lad os sige at arrayet indeholder Y poster (fx. Y=12, dvs. 4 navne, 4 postnumre og 4 byer)

Du opretter X nye arrays med størrelsen Y/X
Du læser de første X poster ind i det første nya array, de næste X poster ind i den næste nye array osv. Herfeter kan du skrive dem til en fil

Print #1, subarray1(i) & subarray2(i) & subarray3(i)
for i = 0 til X-1, naturligvis

Alt dette kan proppes ind i en p´rocedurer, der modtager MyArray og X som parameter, så du kan kalde proceduren ved
  X=3
  MinProcedure (myArray(), X)
:o)
Avatar billede jens_nuuk Nybegynder
27. februar 2003 - 00:48 #16
Hvad med at prøve
Open "C:\txtfil.txt" for output as #1
for x = 0 to whatewer number
print#1,myarray(x)
next
close #1
Avatar billede martin_moth Mester
27. februar 2003 - 01:29 #17
Det løser jo ikke problemet hans problem...
I øvrigt har han vist fået svar :o)
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