Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 14:43:39 - Johan Eriksson, i forum visual basic - allmänt, Tråden har 12 Kommentarer och lästs av 898 personer

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)

Här kommer en snutt av hur textfilen ser ut
Om det inte ser vettigt ut kopiera in det i en textfil

[kod]


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 [/kod]



Det lilla fyrkantiga tecknet som finns med före varje "post" är ascii nr. 12 i.a.f., om det kan hjälpa något.

Jag vill leta på ex, Fältsektion och sen dela in den i en "separat post" till nästa Fältsektion dyker upp.
Sen vill jag säga att ex, 5 rader nedanför Fältsektion och 8 steg så kommer en text på 8 bokstäver som jag vill kopiera och sätta in i en string, intreger, hur gör jag det?
Efter jag har lagrat det jag vill i den posten så går det till nästa och hämtar exakt samma saker.

I varje "post" vill jag ta ut ett par saker, osm personnr, namn, o.s.v.


Mvh Anders.


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 15:18:01 - Sven Åke Persson

mmm... inga problem.Bara att fundera på hur du vill börja plocka.

Ser framför mig en ListBox , kan också vara en TextBox där du klickar för det du vill ha ut.

Jag skulle direkt skippa FileSystemObject.Det finns rakare sätt.

Iofs.skulle man kunna krångla till det med Regulare Expression.

Men som sagt bara "scanna" textfilen och plocka det man anger rad efter rad.


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 15:40:53 - Johan Eriksson

Men, hur?


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 16:19:55 - Sven Åke Persson

Så här har du skrivit.
<-- den vill jag plocka ut

Är det alltid dessa du vill plocka ?


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 16:39:34 - Johan Eriksson

Ja, det är alltid samma saker jag vil plocka ut, dock så kanske inte vissa saker finns med i vissa posten och finns många andra i andra poster.

Tex, såhär kan det se ut.

Post 1 Kostnad
Namn Jonas
person-nr 897
Granhuggning 34
Granhuggning 43
Björkhuggning 43
Ointressant 34
-------------------------------------------
Post2
Namn Johan
person-nr 233
-------------------------------------------
Post 4
Namn Carl
Person-nr 533
Granhuggning 54
Björkhuggning 54
Ointressant 34

Nu ska han plocka ut allt som finns i det där posterna utom onintressant.
Granhuggning är ett prioterat och björkhuggning är inte.
Då ska det lällga ihop hur många Granhuggning det finns och hur många Bjökhuggning det finns sumera de enskilt, alltså, lägger ihop hur många granhuggning det finns i varje post och sumerar summan och samma sak på bjökhuggning.

En kille på IDG.se har hjälp mig med en början på en kod



Här tar den bara fram varje separat post, nu vill jag göra en sökning i den.

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


Dim srtFileName As String
Private Sub Command1_Click()
' Öppna rexfil.
Common.ShowOpen

' Sätter in sökvägen till filen en sträng
srtFileName = Common.FileName

' Skickar filesökvägen till Sub Script
Script srtFileName

End Sub
Sub Script(strINFO As String)

' Deklarerar
Dim arrData()
Dim cRead As New FileSystemObject
Dim oRead As TextStream

' Läs in all data i sData
Set cRead = CreateObject("Scripting.FileSystemObject")
Set oRead = cRead.OpenTextFile(strINFO, 1, True)

sData = oRead.ReadAll()

' Skapa en instans av objektet RegExp. Använd för att utföra sk. mönstermatchningar i en sträng
Set regEx = New RegExp

'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)

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

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

' Exekvera mönstermatchningen. Resultatet returnerar i en sk. Collection (i det här fallet döpt till matches)
Set matches = regEx.Execute(sData)

nCnt = matches.Count
If nCnt > 0 Then
' Expandera den dynamiska arrayen så att den får plats med samtliga träffar
ReDim arrData(nCnt - 1)
nIdx = 0

' Loopa igenom och spara undan varje träff i arrayen och kör en msgbox
For Each Match In matches

arrData(nIdx) = Match.SubMatches(0)
MsgBox (arrData(nIdx))



nIdx = nIdx + 1
Next
End If
End Sub

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


Mvh Anders.


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 17:10:39 - Niklas Jansson

Du har fått en kod från någon annan. Du vill göra ändringar, så du ber någon annan skriva ny kod åt dig?
Eller?

1. Förstår du den koden du redan har?
2. Kan du VB?
3. Är det en specifik fråga du vill ha hjälp med, eller vill du ha ett färdigt program från någon annan?

Om det är så att du kan VB och verkligen vill ha hjälp med något som du har kört fast på, så är det inget problem för oss att svara. Däremot bör du nog inte förvänta dig att någon tänker ge dig en färdig lösning.

PS. Anders eller Johan?
Det står Johan i namnet och du svarar som Anders.


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 18:55:37 - Johan Eriksson

Tja, ungefär så är det.

Han gav mig en bit av den här koden för pilla vidare med, vilket jag gör och jag börjar förstå inbörden av den, men att jag förstår precis allt som står i koden gör jag verkligen inte.

Tja, ganska specifik, jag vila veta hur man tar ut olika delar ur en text, det andra skrev jag mest dit för ni skulle förstå hur jag menade mest.

Jag vill jättegärna lära mig VB, jag tycker det är skitroligt att programmera, och jag försöker verkligen lära mig, dock är det lite stressigt då det här är till jobbet, som inte har råd att anställa någon att göra det åt dem, så då tar de en anställd med gamla aspkunskaper.

Jag vill inte ha hela koden skriven till mig, men jag vill gärna ha en liten snutt som man kan mixtra och flippa med så man förstår inbörden av den lättare, och därifrån utveckla den till något som jag skapar.

Just nu förstår jag inte mer än att jag kan ta ut små textbitar med hjälp utav MsgBox (Mid(sträng, 5, 6)) o.s.v.

Och det är Anders, lånat konto p.g.a. ingen mail.

Nu har jag precis varit och köpt Visualbasic för Windows för dummies, som möjligtvis kan göra mig lite klokare på den här biten.

Mvh Anders.


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-21 19:14:46 - Niklas Jansson

<b>>, jag vila veta hur man tar ut olika delar ur en text, det andra skrev jag mest dit för ni skulle förstå hur jag menade mest.</b>
Ok, grunden är att använda Mid, även om det ofta är lite krångligt.

mid(x, a, b)
ger dig b tecken med start i tecken nummer a från strängen x. Om du inte skriver b så betyder det resten av strängen

Med det kan du i princip göra vad som helst.

Om du vill dela en sträng på ett visst sätt kan du skriva (t.ex.):
Dim halva1 As String, halva2 As String, original As String
Dim brytposition As Long

brytposition = 5
original = "..." 'Någon intressant text
halva1 = Mid$(original, 1, brytposition)
halva2 = Mid$(original, brytposition+1)

Men problemet har lite dåliga förutsättningar.
Finns det något du kan rucka på; hur text-filen genereras, hur datat finns uppställt etc?

Personligen tror jag det går snabbare för dig att lära dig hur du bör bygga en databas för ändamålet (ev. med lite Regular Expressions) och implementera det än att göra en mycket instabil lösning genom att själv leta i strängen. Som nybörjare finns det väldigt många fallgropar med en sån lösning.

Hade jag själv fått välja i ett liknande uppdrag så är det inte omöjligt att jag skulle vilja göra hela skiten i Excel. Min poäng är bara att om du inte är så van vid att programmera, så tror jag inte att företaget gör en förtjänst på att låta dig få en personlig crasch-course och hoppas att det blir en hållbar lösning som ett "vanligt program". Det finns bättre miljöer där mycket redan är förberett, och det finns mycket mer hållbara lösningar.

Ev. så tar ni in en konsult.

Alltså; tänk noga över om detta verkligen är rätt väg; det kan bli dyrare i längden. Därmed inte sagt att det är en dålig idé att utbilda dig och låta dig sköta det, men är det något som behövs hyfsat fort (säg en månad) så är det svårt att få till något bra.


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-22 08:28:23 - Johan Eriksson

Hej, få den i en databas går inte, vi får filen i det här formatat och så ska vi mata in den i en databas, det är hela syftet med det här projektet :)

Mvh Anders.


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-22 09:41:21 - Johan Eriksson

Tackar, det uppskattas verkligen!

Har nu fortsatt på den här koden 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 postnummret 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?

Kan man skriva på något sätt mid(sträng, 34, end next number) typ :)

Mvh Anders.


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-22 12:45:03 - Niklas Jansson

Njae... Det lättaste är nog i så fall att du lär dig regular expressions, och försöker lösa det på det sättet. Sök på "regexp tutorial", så får du nog fram något bra.

I princip kan du ju annars leta med Mid genom strängen tills du hittar, eller bättre, att använda InStr, som ger en position i en sträng;

InStr("abcdef", "c")

ger 3 som svar.
PS. Använd hellre Mid$ än Mid. Det är lite krångligt att förklara nu, men det är bättre med ett $ ... =)


Svara

Sv: Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-22 13:56:31 - Johan Eriksson

Ok, ska leta på en sådan.

Om man ska leta upp hur många gånger ordet finns med då?

tillexempel om "jaga" finns med 3 gånger, sedan kopiera hur många gånger det finns med till en variabel?

Märkte att inStr söker bara upp första ordet sen stannar den.

Mvh Anders.


Svara

Sv:Läsa ifrån textfil, läsa sia delar, avdela.

Postades av 2005-11-22 14:08:43 - Johan Eriksson

Aha, löste det med hjälp utav RexExp :D


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 722
27 958
271 751
749
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies