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


Räkna rader i en txt-fil...

Postades av 2005-08-16 13:19:27 - Jörgen Fransson, i forum visual basic - allmänt, Tråden har 11 Kommentarer och lästs av 1042 personer

Hej!

Någon som har ett tips på hur man kan räkna antalet rader i en textfil på ett enklare sätt än nedanstående? Det är så att jag vill dimensionera en array i förväg och slippa dra igenom filen två ggr.

Open "C:\Test.txt" For Input As intFilNr

While Not EOF(intFilNr)
Line Input #intFilNr, strTemp1
i = i + 1
Wend

Close #intFilNr


/Jörgen


Svara

Sv: Räkna rader i en txt-fil...

Postades av 2005-08-16 13:31:40 - Sven Åke Persson

Nää jag kan inte se nån bättre lösning .
Man skulle också kunna räkna hur många vbCrLf det finns i texten.
Men det finns mig veterligen inget bra sätt att göra det snabbare.

Man kan också använda API SendMessage med <b>Const EM_GETLINECOUNT = &HBA</b>
Det förutsätter att du har laddat texten i en TextBox
<code>
' Get number of lines in TextBox
TextLines = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
</code>
Då skulle man kunna tänka sig att du laddar en Visible = False Textbox
redan i Form_Load och sedan använder API:et när den tiden kommer.

Men varför i hela fridens namn skriver folk så här ???
<b>While Not EOF(intFilNr)</b>
"Så länge inte jobbet är klart får du fortsätta"
Var för skall man lägga in en Negations Operator Not, till vilken nytta ?

Jag skriver på det positiva sättet utan att "svamla" med extra "Inte"(Not) fras.
<b>Do Until EOF(intFilNr)</b>
"Kör till det är klart"


Svara

Sv:Räkna rader i en txt-fil...

Postades av 2005-08-16 14:00:41 - Jörgen Fransson

Oki, jag tackar för tipsen iaf...


Svara

Sv: Räkna rader i en txt-fil...

Postades av 2005-08-16 22:23:15 - Bo Johansson

Hej!
Man kan ju dimensionera arrayen efterhand:

While Not EOF(intFilNr)
Line Input #intFilNr, strTemp1
i = i + 1
ReDim Preserve Inpfield(i)
Wend
/Bo


Svara

Sv:Räkna rader i en txt-fil...

Postades av 2005-08-17 09:26:32 - Andreas Hillqvist

Det är resurskrävande att dimensionera om en array. Du du är tvungen at alkoera nytt minnesområd, Föröver informationen och frigöra det gamla för varje rad. Det tar mer och mer tid ju fler poster det blir. Då kan det i vissa fall löna sig att läsa igenom filen för att räkna tecken.

Hur stora filer rör det sig om? Om det är mindre filer. Kan du läsa in hela filen till en variabel. Då det är snabbare att läsa hela fil till en variabel och arbeta med den där. Än att läsa rad för rad. Fil IO operationer är långsamma.


Svara

Sv: Räkna rader i en txt-fil...

Postades av 2005-08-17 10:37:42 - Kenneth Axi

Annars kan du ju alltid använda Split:

<code>
Dim intFilNr As Integer
Dim strTemp1 As String
Dim strTemp2 As String
Dim strMyArray() As String

Open "C:\Test.txt" For Input As intFilNr
While Not EOF(intFilNr)
Line Input #intFilNr, strTemp1
strTemp2 = strTemp2 & strTemp1
Wend
strMyArray = Split(strTemp2, vbCrLf)
</code>

Då kommer strMyArray automatiskt att vara dimensionerad till antalet rader...


Svara

Sv:Räkna rader i en txt-fil...

Postades av 2005-08-17 12:02:26 - Andreas Hillqvist

Ahhh! Är du galen pojk. Inte konkratenera ihop en fil radvis. Det är galenskap.
Då strängvariabeln kommer omalkoeras vid varje tilldelning.

* Ta istället reda på stroleken på filen.
* Fylle en varaibel med tecken.
* Läs in filen i variabeln.


Svara

Sv: Räkna rader i en txt-fil...

Postades av 2005-08-17 16:43:10 - Kenneth Axi

Visserligen, men vad betyder det om det är en mindre fil? Ingen som helst betydelse. Det har endast betydelse om vi pratar om filer som fyller Mb på hårddisken... Oftast när man jobbar med textfiler så är filerna bara några k stora och då är minnesallokeringen så pass snabb att du inte kommer att märka av det i allafall.

Men visst - om man skall tänka på skalbarhet så har du rätt.


Svara

Sv:Räkna rader i en txt-fil...

Postades av 2005-08-17 20:01:51 - Andreas Hillqvist

Eftersom detta är ett forum. Så bör vi lära ut concept. Man skall se i ett större perspektiv på sin lösning.
Din kod påverkar alla som läser den. Du bör därför skriva på bästa sätt. För att ager föredömligt för andra.


Svara

Sv: Räkna rader i en txt-fil...

Postades av 2005-08-17 20:41:09 - Sven Åke Persson

Jag tycker Axi:s svar var bra i princip,
mycket överspel och pekpinnar här av den gode Hillqvist !

<b>Eftersom detta är ett forum</b> Och blir frågan ?
Axi:s förslag lite modifierat.
<code>
Dim intFilNr As Long
Dim tmpStr As String
Dim strMyArray() As String
intFilNr = FreeFile
Open "C:\Test.txt" For Input As intFilNr
tmpStr = Input$(LOF(intFilNr),#intFilNr)
Close #intFilNr
strMyArray = Split(tmpStr, vbCrLf)
</code>


Svara

Sv:Räkna rader i en txt-fil...

Postades av 2005-08-18 07:57:42 - Andreas Hillqvist

Nu är jag, primadonnan, nöjd. ;o)


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
297
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