Avatar billede puller Nybegynder
09. april 2001 - 12:17 Der er 15 kommentarer og
1 løsning

Skal lave tekstfil om til kommasep fil

Hej

Har en fil der skal konverteres til en kommmasepareret fil.

Filen ser måske således ud:

G000000000000000020010307113957000000.0000001IS000000000000000000000000004EM000003
T20010307113958002722.0000100011636000400000041M

Hver post starter enten med G eller T.

Formatet for linie er:

Dataformatet ser således ud for G-linien: 1+16+6+6+8+2+4+1+1+4+19+4+1+1+3+3+1+1 = 84 Char

For T linie ser det således ud:
1+8+6+8+4+4+4+4+4+4+1+1+1 = 50 Char

Formaterne er faste hver gang!

Hvordan klarer jeg lige den?
Avatar billede tdaugaard Nybegynder
09. april 2001 - 12:19 #1
Så filen:

\"G000000000000000020010307113957000000.0000001IS000000000000000000000000004EM000003
T20010307113958002722.0000100011636000400000041M\"

indeholder to poster ? (bare for at være sikker ..)
Avatar billede puller Nybegynder
09. april 2001 - 12:20 #2
Nej den kan variere med få poster til tusindvis
Avatar billede tdaugaard Nybegynder
09. april 2001 - 12:20 #3
\"Dataformatet ser således ud for G-linien: 1+16+6+6+8+2+4+1+1+4+19+4+1+1+3+3+1+1 = 84 Char \"
den fatter jeg ikke meget af !?
Avatar billede tdaugaard Nybegynder
09. april 2001 - 12:21 #4
puller:> nåå ja .. men jeg mente at DEN linie der indeholdte 2 poster . .
Avatar billede puller Nybegynder
09. april 2001 - 12:22 #5
Det er hvornår komma skal sættes. Man kan også sige det sådan at det er feltets størrels man her angiver. Altså hvormang tegne der må være i hvert felt!
Avatar billede puller Nybegynder
09. april 2001 - 12:23 #6
Det er sådan at G og T indikerer hvilket format der skal bruges!
Avatar billede puller Nybegynder
09. april 2001 - 12:24 #7
Det er måske mig der forklarer mig dårligt men den indholder selvfølgelig to linier denne fil her!
Avatar billede tdaugaard Nybegynder
09. april 2001 - 12:26 #8
hmm .. den kan jeg skuøt lige greje .. sorry
Avatar billede puller Nybegynder
09. april 2001 - 12:29 #9
Tror du ikke at det er muligt hvis man gør sådan at den søger efter et G eller T som første tegn at det er muligt at vælge det ene eller andet format.

For det den egentlig bare skal gøre er at den skal sætte et komma et char inde og derefter 16 char inde osv.?
Avatar billede jennemaan Nybegynder
09. april 2001 - 12:31 #10
Dim iIn as Integer
Dim iOutG as Integer
Dim iOutT as Integer
Dim strIn As String
Dim larOut As String
iIn=FreeFile

Open \"Inputfil.txt\" For Input As iIn
iOutG=FreeFile
Open \"OutputG.txt\" For Output As iOutG
oOutT=FreeFile
Open \"OutputT.txt\" For Output As iOutT


While Not Eof(iIn)

Line Input #iIn, strIn

If Mid(strIn,1,1)=\"G\" Then
\'Do GInput
strOut=Mid(strIn,2,1) & \",\"
strOut=strOut & Mid(strIn,3,16) & \",\"
strOut=strOut & Mid(strIn,20,6) & \",\"
.
.
.
.
strOut=strOut & Mid(strIn,84,1)
Print #iOutG, strOut \'Skriv en linje til filen

ElseIf Mid(strIn,1,1)=\"T\" Then
\'Do TInput
\'efter samme mønster som DoGInput :o)


End If

Wend

Close iOutG
Close iOutT
Close iIn
Avatar billede jennemaan Nybegynder
09. april 2001 - 12:39 #11
Man kunne evt. skrive en generelt kodestump ala:

larInFormat=Array(1,16,6,6,8,2,4,1,1,4,19,4,1,1,3,3,1,1)
iPos=2 \'går udfra at den skal springe G\'et over ;)
strOut=\"\"
For idx=lBound(larInFormat) To Ubound(larInFormat)
  strOut=strOut & Mid(strIn,iPos,larInFormat(idx)
  If idx<>Ubound(larInFormat) Then strOut=strOut & \",\"
  iPos=iPos+larInFormat(idx)
Next idx


/Jennemaan :o)
Avatar billede puller Nybegynder
09. april 2001 - 12:42 #12
Jennemaan<-- Kanon besvarelse, men G\'et skal ikke springes over det skal med i posten.
Avatar billede jennemaan Nybegynder
09. april 2001 - 12:46 #13
okie... Så set iPos=1 inden du går i loopen :o)

/Jennemaan
Avatar billede jennemaan Nybegynder
09. april 2001 - 12:47 #14
btw.,, 1+16+6+6+8+2+4+1+1+4+19+4+1+1+3+3+1+1 = 82 og ikke 84 ;o)

/Jennemaan
Avatar billede puller Nybegynder
09. april 2001 - 13:29 #15
Hvordan var det nu lige at jeg integrerer et sådant array?
Avatar billede jivefive Nybegynder
13. april 2001 - 20:35 #16
Hej puller

Øhh så vidt jeg kan se har du en tekstfil, hvor hver ny post starter med enten G eller T.

Har du prøvet simpelthen at udskifte G og T med ,G og ,T sådan her.

Public Function ProcessString(argInputString as String)
Dim strOutputString as String

strOutputString = Replace(argInputString,\"G\",\",G\")
strOutputString = Replace(strOutputString,\"T\",\",T\")
ProcessString = strOutputString
End Function

Det virker ligesom lidt nemmere end at lave noget, der minder om kildekoden til Win2000 ;o)

Jeg håber det hjælper dig.

Venlig hilsen
JiveFive
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