Just nu i M3-nätverket
Gå till innehåll

Läsa *.txt, vissa delar, kopiera enskilt


apaaaa

Rekommendera Poster

Hej.

 

Håller på med ett litet program till jobbet.

 

Det kommer en textfil, *.txt

 

Där finns ett ärenden som ska plockas ut enskilt.

 

Vid varje nytt ärenden finns en avskiljare, <-- av sådan typ.

 

Nu säger vi såhär

 

 

 

rsdfad1 5

 

rasdfd2 5

 

rsdfad3 5 <-- den vill jag plocka ut

 

rasdfd4 <-- 5 ---- den vill jag plocka ut.

 

 

 

rasdfd13 55

 

rasdfd44 54

 

rsdfad55 55 <-- den vill jag plocka ut

 

rasdfd43 <-- 56 -- den vill jag plocka ut

 

 

 

rasdfd13 55

 

rasdfd44 54

 

rsdfad55 55 <-- den vill jag plocka ut

 

rasdfd43 <-- 56 -- den vill jag plocka ut

 

 

Sen håller det på sådär i ett par år. Hur gör jag det här på lättas sätt, jag är väldigt ny på VB kanske ska tillägga, så förklara grundligt.

 

För läsa textfilen använder jag mig utav

 

Set cRead = CreateObject("Scripting.FileSystemObject")

Set oRead = cRead.OpenTextFile(tRead, ForReading, True)

 

Mvh Anders.

 

Länk till kommentar
Dela på andra webbplatser

Jag förstår inte riktigt hur din textfil är uppbyggd. Kan du skriva ut ett par rader där du inte slängt in kommentarer.

 

Länk till kommentar
Dela på andra webbplatser

Hej kommer en bit av koden

 

 

Jagh vill ta ut personnr, namn, belopp o.s.v. och spara den i en rad i en databas.

 

 

OBS! Om det inte ser vettigt ut, kopiera det till ett textdocument, (*.txt)

 

------------------------------------------------------

 



  Fältsektion 0000-00                       5555-55-55                           
  Box 555                                                                        
  555 55  DaseStan                                                               

  Expeditionstid: 55555 - 5555                                                   
  Telefonnummer:  555-55 55 55                                                   
  Telefaxnummer:  555-55 55 55                                                   

                                            Script Hem AB                        


                                            BOX 5555                             
                                            55 55  DASETOWN                      




  Utdrag ur databasen avseende:                                                  
  555555-5555                                                                    
  Fredriksson, Fredrik                                                           
  Fredriksgata 55 F 555 55 Fredrikstad                                           
  -------------------------------------------------------------------------------
  Stor sak allmänna mål:              55                                         

  Fordonsskatt                        55                                         



  Skuld i enskilda mål:           55 555    (antal mål:       5)                 

  Diarienr: U-555555-55   Begränsad tillgångsundersökning begärd                 
  Sökande/Ombud HANDELSBANKEN FINANS AB(PUBL)              KRONOR         55 555 

  Åtgärder:                                                                      
         Förfrågan till raksaken                                                 


  FREDRIKSFONDEN                                                                 


  Fältsektion 0000-00                       5555-55-55                           
  Box 555                                                                        
  555 55  DaseStan                                                               

  Expeditionstid: 55555 - 5555                                                   
  Telefonnummer:  555-55 55 55                                                   
  Telefaxnummer:  555-55 55 55                                                   

                                            Script Hem AB                        


                                            BOX 5555                             
                                            55 55  DASETOWN                      




  Utdrag ur databasen avseende:                                                  
  555555-5555                                                                    
  Fredriksson, Fredrik                                                           
  Fredriksgata 55 F 555 55 Fredrikstad                                           
  -------------------------------------------------------------------------------
  Stor sak allmänna mål:              55                                         

  Fordonsskatt                        55                                         



  Skuld i enskilda mål:           55 555    (antal mål:       5)                 

  Diarienr: U-555555-55   Begränsad tillgångsundersökning begärd                 
  Sökande/Ombud HANDELSBANKEN FINANS AB(PUBL)              KRONOR         55 555 

  Åtgärder:                                                                      
         Förfrågan till raksaken                                                 


  FREDRIKSFONDEN                                                                 


  Fältsektion 0000-00                       5555-55-55                           
  Box 555                                                                        
  555 55  DaseStan                                                               

  Expeditionstid: 55555 - 5555                                                   
  Telefonnummer:  555-55 55 55                                                   
  Telefaxnummer:  555-55 55 55                                                   

                                            Script Hem AB                        


                                            BOX 5555                             
                                            55 55  DASETOWN                      




  Utdrag ur databasen avseende:                                                  
  555555-5555                                                                    
  Fredriksson, Fredrik                                                           
  Fredriksgata 55 F 555 55 Fredrikstad                                           
  -------------------------------------------------------------------------------
  Stor sak allmänna mål:              55                                         

  Fordonsskatt                        55                                         



  Skuld i enskilda mål:           55 555    (antal mål:       5)                 

  Diarienr: U-555555-55   Begränsad tillgångsundersökning begärd                 
  Sökande/Ombud HANDELSBANKEN FINANS AB(PUBL)              KRONOR         55 555 

  Åtgärder:                                                                      
         Förfrågan till raksaken                                                 


  FREDRIKSFONDEN                                                                 

 

------------------------------------------------------

 

 

 

Sen fortsätter det sådär ett bra tag, varje nytt ärende börjar med ett

  

 

 

 

Mvh Anders.

 

 

[inlägget ändrat 2005-11-21 12:58:29 av apaaaa]

Länk till kommentar
Dela på andra webbplatser

Sen fortsätter det sådär ett bra tag, varje nytt ärende börjar med ett

Börjar med ett....vad? Är det något specieltecken som lyckades falla bort när du skrev inlägget?

 

EDIT: Ok, nu fick du med det, men jag kan inte se vad det är för tecken/teckenföljd.

[inlägget ändrat 2005-11-21 13:01:16 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Men, det spelar ingen roll ,det behöver inte just vara det, vi kan ex, ta det till nästa post med hjälp utav "Fältsektion" eller något annat.

 

Jag vill avsilja att varje gång, Fältsektion eller ascci12 eller något kommer så är det på en ny rad i databasen.

 

Samt, hur plockar jag ut informationen på bästa sätt?

 

Mvh Anders.

 

Länk till kommentar
Dela på andra webbplatser

Ok, börja med att lägga till följande komponent under Project->References

Microsoft VBScript Regular Expressions 5.5

 

Följande korta exempel kanske kan få dig en bit på vägen iallafall.

 

[log]

[color="#0000ff"]Dim[/color] arrData()

[color="#0000ff"]Set[/color] cRead = [color="#0000ff"]CreateObject[/color]([GRÅ]"Scripting.FileSystemObject"[/GRÅ])
[color="#0000ff"]Set[/color] oRead = cRead.OpenTextFile([GRÅ]"c:\fil.txt"[/GRÅ], 1, [color="#0000ff"]True[/color])
sData = oRead.ReadAll()

[color="#0000ff"]Set[/color] regEx = [color="#0000ff"]New[/color] RegExp
regEx.Pattern = [GRÅ]"\f([^\f]+)"[/GRÅ]
regEx.IgnoreCase = [color="#0000ff"]True[/color]
regEx.Global = [color="#0000ff"]True[/color]
[color="#0000ff"]Set[/color] matches = regEx.[color="#0000ff"]Execute[/color](sData)
nCnt = matches.Count
[color="#0000ff"]If[/color] nCnt > 0 [color="#0000ff"]Then[/color]
    [color="#0000ff"]ReDim[/color] arrData(nCnt - 1)
    nIdx = 0
    [color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] Match [color="#0000ff"]In[/color] matches
        arrData(nIdx) = Match.SubMatches(0)
        [color="#0000ff"]MsgBox[/color] (arrData(nIdx))
        nIdx = nIdx + 1
    [color="#0000ff"]Next[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[/log]

 

[inlägget ändrat 2005-11-21 14:43:34 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

Tackar!

 

Du får hemskt gärna förklara lite mer vad du gör också och vad "\f([^\f]+)" innebär?

 

Vad händer och varför händer det?

 

 

Jag är som sagt otroligt ny på VB :)

 

Mvh Anders.

 

Länk till kommentar
Dela på andra webbplatser

Koden med kommentarer:

 

[log]

[color="#006400"]' Deklarera en dynamisk array[/color]
[color="#0000ff"]Dim[/color] arrData()

[color="#006400"]' Läs in all data i sData[/color]
[color="#0000ff"]Set[/color] cRead = [color="#0000ff"]CreateObject[/color]([GRÅ]"Scripting.FileSystemObject"[/GRÅ])
[color="#0000ff"]Set[/color] oRead = cRead.OpenTextFile([GRÅ]"c:\fil.txt"[/GRÅ], 1, [color="#0000ff"]True[/color])
sData = oRead.ReadAll()

[color="#006400"]' Skapa en instans av objektet RegExp. Använd för att utföra sk. mönstermatchningar i en sträng[/color]
[color="#0000ff"]Set[/color] regEx = [color="#0000ff"]New[/color] RegExp

[color="#006400"]'Sätt det mönster som skall användas. \f matchar ett FormFeed tecken.  ([^\f]+) matchar alla nästföljande tecken fram till nästa FormFeed. Uttrycket inom parentes är det som senare i koden hämtas med  Match.SubMatches(0)[/color]

regEx.Pattern = [GRÅ]"\f([^\f]+)"[/GRÅ]

[color="#006400"]' Ignorera versaler/gemener i mönstermatchningen (ej av vikt i det här fallet)[/color]
regEx.IgnoreCase = [color="#0000ff"]True[/color]
[color="#006400"]' Ange att samtliga träffar skall returneras (annars får du bara ut den första posten)[/color]
regEx.Global = [color="#0000ff"]True[/color]

[color="#006400"]' Exekvera mönstermatchningen. Resultatet returnerar i en sk. Collection (i det här fallet döpt till matches)[/color]
[color="#0000ff"]Set[/color] matches = regEx.[color="#0000ff"]Execute[/color](sData)

nCnt = matches.Count
[color="#0000ff"]If[/color] nCnt > 0 [color="#0000ff"]Then[/color]
[color="#006400"]' Expandera den dynamiska arrayen så att den får plats med samtliga träffar[/color]
[color="#0000ff"]ReDim[/color] arrData(nCnt - 1)
nIdx = 0

[color="#006400"]' Loopa igenom och spara undan varje träff i arrayen och kör en msgbox[/color]
[color="#0000ff"]For[/color] [color="#0000ff"]Each[/color] Match [color="#0000ff"]In[/color] matches
arrData(nIdx) = Match.SubMatches(0)
[color="#0000ff"]MsgBox[/color] (arrData(nIdx))
nIdx = nIdx + 1
[color="#0000ff"]Next[/color]
[color="#0000ff"]End[/color] [color="#0000ff"]If[/color]

[/log]

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tackar, det uppskattas verkligen!

 

Har nu fortsatt på den här koden(börjar förstå den lite i.a.f.) och plockar ut textsträngar med.

 

Nu anväder jag mig utav (mid(sträng, 2 , 3))

Men om jag vill börja på en anged position och vill sluta där det börja en siffra, som om det står tillexempel

 

Grafikvägen 23 642 32 Stängnäs

 

Först vill jag sätta in Vägen, Gatan i en variabel, sedan väg, gatnummret, sedan post nummret och sist staden. Men de har ju olika längd allihopa, så man kan inte ange exakt position på början och slut. Hur gör man det här lättas?

 

Mvh Anders.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...