Visualizzazione dei risultati da 1 a 9 su 9

Discussione: operazioni su txt

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361

    operazioni su txt

    ciao...avendo letto un pò di forum sui txt ho scritto il seguente codice :
    codice:
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("testfile.txt", True)
    
    Dim record As String
    Open "bv0103.txt" For Input As #1
    Do While Not EOF(1)
       Line Input #1, record
       If Left(record, 3) = "500" Then
          a.writeline (record)
       End If
    Loop
    Close #1
    a.Close
    volevo sapere qual'è il comando per muovermi alla riga successiva?

    Infatti questo file txt contiene un'infinità di informazioni suddivise in categorie da dei codici. La 500 è quella con le info su un'identità....e di seguito sono riportate info su quella identità (di diversa natura).
    io devo però avere la certezza che le informazioni siano riferite a quell'identità quindi pensavo di spostarmi alle linee successive ogni volta individuata la linea "500" e "raccogliere" le informazioni fino a quando non trovo un altra linea "500".
    Se qualcuno ha qualche idea ne sarei grato!!!

  2. #2

    Re: operazioni su txt

    codice:
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("testfile.txt", True)
    
    Dim record As String
    Open "bv0103.txt" For Input As #1
    Do While Not EOF(1)
       Line Input #1, record 
       If Left(record, 3) = "500" Then
          a.writeline (record)
       End If
    Loop
    Close #1
    a.Close
    volevo sapere qual'è il comando per muovermi alla riga successiva?
    ...
    line input fa già quello che dici, legge la linea esi sposta su quella dopo, se la richiami N volte ti sposti di N righe
    ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    ok, grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    per fare quello che dicevo pensavo di inserire un altro ciclo dentro if then

    come lo scrivo il controllo del ciclo (di scorrere il file finche non è la linea 500)??

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da gaullo
    per fare quello che dicevo pensavo di inserire un altro ciclo dentro if then

    come lo scrivo il controllo del ciclo (di scorrere il file finche non è la linea 500)??
    puoi mettere una variabile che si incremente ad ogni ciclo WHILE. Appena arriva a 500 esce.

    Okkio che se il file ha meno di 500 righe va in errore perchè scatta la EndOfFile (EOF)

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    dho!!
    scusate ma ho scritto male....non intendo la 500 esima riga, bensì la riga 500 (inizia con un codice, il 500 appunto)

    sto scrivendo sto codice
    codice:
    Do While Not Left(record, 3) = "500"
       If Left(record, 3) = "500" Or Left(record, 3) = "500" Or Left(record, 3) = "500" Then
          a.writeline (" _ " & record)
       End If
       Line Input #1, record
    Loop
    mi preoccupa il fatto che non so di preciso cosa fa il comando line imput #1, record
    se ho capito bene copia nella variabile record la linea e si sposta alla linea successiva (giusto??).

  7. #7
    Si, è giusto,ma ti conviene fare una cosa del genere


    codice:
    Line Input #1, record
    Do While Not EOF(1)                   'Fino alla fine del file
       if Left(record, 3) = "500" then    'Se record identità 
          a.writeline (" _ " & record)    'scrivo linea
       End If
       Line Input #1, record              'Linea successiva
    Loop

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    361
    ecco l'algoritmo attuale:
    codice:
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set a = fs.CreateTextFile("testfile.txt", True)
    
    Dim record As String
    Open "bv0103.txt" For Input As #1
    Do While Not EOF(1)
       If Left(record, 3) <> "500" Then
          Line Input #1, record
       End If
       If Left(record, 3) = "500" Then
          cont = cont + 1
          Label1.Caption = cont
          a.writeline (Trim(Mid(record, 43, 19)) & vbTab & Trim(Mid(record, 16, 25)))
          Line Input #1, record
          Do While Not Left(record, 3) = "500"
             If Left(record, 3) = "515" Or Left(record, 3) = "534" Or Left(record, 3) = "505" Or Left(record, 3) = "532" Then
                a.writeline (" - " & record)
             End If
             Line Input #1, record
          Loop
       End If
    Loop
    Close #1
    a.Close
    Alla fine però mi va in errore su l'ultimo comando line imput...perchè è finito il file txt.
    Come posso risolvere questo problema??
    (Penso che i line imput possano essere scritti in altro modo ma non lo riesco a vedere, magari un occhio esterno....)

  9. #9
    Devi usare un solo ciclo:
    codice:
    Line Input #1, record
    Do While Not EOF(1)                   'Fino alla fine del file
       if Left(record, 3) = "500" then    'Se record identità 
          cont = cont + 1
          Label1.Caption = cont
          a.writeline (Trim(Mid(record, 43, 19)) & vbTab & Trim(Mid(record, 16, 25)))
       End If
       Line Input #1, record              'Linea successiva
    Loop
    Se devi aggoiungere altri controlli o operazioni ti conviene farlo all'interno dell'if


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.