Avatar billede michaelmark Nybegynder
14. februar 2001 - 14:22 Der er 16 kommentarer

Udklip tekst efter hver linefeed

Hejsa,

Hvordan klipper jeg en tekst ud imellem to linefeeds?
Avatar billede privaten Nybegynder
14. februar 2001 - 14:29 #1
Dim s, s1
s = \"test\" + vbCrLf + \"test-2\" + vbCrLf
s1 = Left(s, InStr(s, vbCrLf) - 1)

giver s1 = \"test\"

du kan også kigge på split functionen hvis du kører 2000

Avatar billede michaelmark Nybegynder
14. februar 2001 - 14:33 #2
Hvordan får man den så til at springe videre til næste record!
Avatar billede michaelmark Nybegynder
14. februar 2001 - 14:42 #3
Og hvordan sletter man den record man lige har læst?
Avatar billede michaelmark Nybegynder
14. februar 2001 - 15:03 #4
Jeg vil gerne have den til at løbe posten igennem indtil den støder på endgroup, når den møder dette felt skal den gerne starte en ny post!
Avatar billede privaten Nybegynder
14. februar 2001 - 16:55 #5
prøve at forklare eller fremsend et eksempel
Avatar billede joern Nybegynder
14. februar 2001 - 16:56 #6
Hej Michael.

Hvis du uddyber dit spørgsmål så jeg kan forstå det, kan jeg sikkert også svare.
Hvor kommer din tekst fra?  Læsning med Line Input fra en åben ascii-fil?

Hvad vil du ende med?  En række varialble, der indeholder \"felter\'s\" indhold?

M.v.h.  Jørn
Avatar billede privaten Nybegynder
14. februar 2001 - 17:01 #7
Function mySplit(s As String, ByRef a() As String) As Integer
    Dim s1 As String
    Dim i As Integer
    s1 = s
    If s = \"\" Then
        mySplit = 0
        Exit Function
    Else
        i = 0
        \' count number of substrings in s
        While InStr(s1, vbCrLf) > 0
            s1 = Mid(s1, InStr(s1, vbCrLf) + 1)
            i = i + 1
        Wend
    End If
   
    ReDim a(i + 1) As String
    i = 0
    \' count number of substrings in s
    While InStr(s, vbCrLf) > 0
        a(i) = Left(s, InStr(s, vbCrLf) - 1)
        s = Mid(s, InStr(s, vbCrLf) + 1)
        i = i + 1
    Wend
   
    If s <> \"\" Then
        a(i) = s
        i = i + 1
    End If
    a(i) = vbNullString
    mySplit = i
End Function

denne funktion afleverer et array med elementerne fra source-string

fx.

dim AntalElementer as integer
dim a() as string
Dim s, s1
s = \"test\" + vbCrLf + \"test-2\" + vbCrLf

AntalElementer = mySplit(s, a)

AntalElementer indeholder nu tallet 2
a(0) er lig \"test2\"
a(1) er lig \"test\"

Så har du lidt at lege med

Avatar billede michaelmark Nybegynder
15. februar 2001 - 08:11 #8
GROUP 00008000
1
20000101
8.68
0093
900001
169

04
19010007
23
03
23.00

000.00
END GROUP

Dette er formatet på filen, data\'ene imellem GROUP 00008000 og END GROUP, Vil jeg gerne have over i en fil som en post, denne fil skulle gerne kunne indlæses i excel (access).
Avatar billede michaelmark Nybegynder
15. februar 2001 - 09:20 #9
Filen skulle helst kunne gemmes i komma separeret fil!
Avatar billede michaelmark Nybegynder
15. februar 2001 - 10:46 #10
Ja, undskyld mig.

Men hvad skal jeg skrive for at kalde funktionen. Hvis jeg fx vil gøre det fra en knap?
Avatar billede joern Nybegynder
15. februar 2001 - 11:01 #11
Hej Michael.

Jeg regner med at der er 16 linier for hver post, ellers skal det gøres lidt anderledes.
Filen kalder jeg \"minfil\".  Du skal selvfølgelig \'dimme\' de variable.
De linier der er tomme, skal de overspringes eller være 0 (nul)? 
Benytter du point som decimaltabulator i din windows?

Dim data(16), linie as String
Dim a as Integer
-----------------------------------------
Private sub ......command1  eller...

Open sti og \"\\minfil.ext\" for Input as #1
Open sti og \"\\udfil.csv\" for Output as #2
  Do While EOF (1) = False
    For a = 0 to 15
      line input #1, data(a)
    Next
   
    linie = val(data (1))                    \'første data - i eksemplet: 1
   
    For a = 2 to 14                          \'komma og følgende data
      linie = linie & \",\" & val(data(a))    \'Med valør (val) undgår du \" \" om tallene.
    Next
    print #2, linie                              \'strengen linie skrives til ud-filen
    linie=\"\"                                      \'strengen linie tømmes for indhold
  Loop
Close #1

End sub

Forhåbentlig rigtigt, ellers har du en skitse til metoden.

Skal du to tomme linier overspringes må du lave If og \'label\' så du kan undlade
at skrive dem til \'linie\'.

M.v.h.  Jørn
Avatar billede joern Nybegynder
15. februar 2001 - 11:02 #12
Du skal også lukke #2.  m.v.h.  Jørn
Avatar billede michaelmark Nybegynder
15. februar 2001 - 12:01 #13
Det virkere nu også helt fint joern- MEN den laver data\'ene om til tal!
Avatar billede michaelmark Nybegynder
15. februar 2001 - 12:13 #14
Der ligger nogle data før den første group 00008000, hvordan får jeg lige klippet dem væk?
Avatar billede michaelmark Nybegynder
15. februar 2001 - 12:24 #15
Måske jeg skulle sende dig filen?
Avatar billede joern Nybegynder
15. februar 2001 - 13:10 #16
Skulle det ikke være tal?  Det ligner tal.  Så fjerner du bare val-funktionen alle steder.

Data før 00008000?  Kun én gang eller for hver post?

joern.thorsen@get2net.dk

M.v.h.  Jørn
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