Avatar billede jeffee Nybegynder
12. maj 2005 - 15:56 Der er 3 kommentarer og
1 løsning

skrive blanke felter til ascii

Jeg sidder med en programstump der læser et antal variable fra hver linie i en ascii fil og derefter skal skrive tilsvarende variabler i en ny asciifil. Det virker helt fint så længe der ikke ændres i variablerne.Mit problem er at de blanke felter før hver variabel der gør at de står på den rigtige plads i filen forsvinder hvis variablen redigeres. Eksempel hvor variablen bbb ændres til BBB: gl. fil:" aaa  bbb  ccc" Ny fil: " aaaBBB  CCC" ønskes: "aaa  BBB  ccc"
         
min kode der henter en gl fil. Deler op i variable og skriver til en ny ser således ud.

Private Sub Command1_Click()

Dim FilNavn As String
Dim NyFilNavn As String
Dim ObjKode As String
Dim LinieKode As String
Dim XKor As String
Dim YKor As String
Dim ZKor As String
Dim Radius As String
Dim SigRet As String
Dim SigStr As String
Dim TextRet As String
Dim TextStr As String
Dim RelXKor As String
Dim RelYKor As String
Dim AccKode As String
Dim DBLink As String
Dim KortText As String
Dim LangText As String
Dim EndOfFile As String
Dim NyLinie As String

FilNavn = "c:\test.asc"
Kill "C:\testskriv.asc"
NyFilNavn = "C:\testskriv.asc"

Open FilNavn For Input As #1
Open NyFilNavn For Append As #2
  'Læs 17 linier
  For Index = 0 To 15:
  Line Input #1, String1
  Print #2, String1
: Next

Do While EOF(1) = False

    Line Input #1, strline
    ObjKode = Left((strline), 4)
    LinieKode = Mid(strline, 5, 2)
    XKor = Mid(strline, 7, 10)
    YKor = Mid(strline, 17, 10)
    ZKor = Mid(strline, 27, 7)
    Radius = Mid(strline, 34, 10)
    SigRet = Mid(strline, 44, 6)
    SigStr = Mid(strline, 50, 6)
    TextRet = Mid(strline, 56, 6)
    TextStr = Mid(strline, 62, 6)
    RelXKor = Mid(strline, 68, 6)
    RelYKor = Mid(strline, 74, 6)
    AccKode = Mid(strline, 80, 11)
    DBLink = Mid(strline, 91, 11)
    KortTekst = Mid(strline, 102, 12)
   
 
   

  NyLinie = ObjKode & LinieKode & XKor & YKor & ZKor & Radius & SigRet & SigStr & TextRet & TextStr & RelXKor & RelYKor & AccKode & DBLink & KortTekst
  End If
  Print #2, NyLinie
  Loop
Close #1
Close #2

End Sub
Avatar billede martin_moth Mester
12. maj 2005 - 16:49 #1
Uden mellemrum:

  NyLinie = trim(ObjKode) & trim(LinieKode )

Med mellemrum

  NyLinie = trim(ObjKode) & " " & trim(LinieKode )
Avatar billede jeffee Nybegynder
13. maj 2005 - 07:59 #2
Problemet er at det ikke er det samme antal mellemrum der skal til hver gang. Hver variabel skal fylde nøjagtigt de pladser jeg henter dem fra - og dermed skal der være x antal tomme felter foran variablen. 

Det ville derfor være fint hvis man kunne skrive få variablen til at være samme størrelse og højrestillet med blanke foran hver gang man skriver den.. Kan man det?

Jeffee
Avatar billede sjh Nybegynder
14. maj 2005 - 16:39 #3
Ja du kan lave dig en fonktion som kan

Public Function LeftSapce(strText As String, lngLength As Long) As String
  LeftSapce = Right$(Space$(lngLength) & strText, lngLength)
End Function

  ...
  Line Input #1, strline
  strline = LeftSapce(strline, 114) ' Her vil strline være 114 lang med mellemrum foran den tekst som ikke 114 lang..

  ObjKode = Left((strline), 4)
  LinieKode = Mid(strline, 5, 2)
  ...
Avatar billede jeffee Nybegynder
15. maj 2005 - 20:50 #4
kanon

takker og lukker
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