Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89

    [VB6] Leggere da un file ASCII e scriverne in un altro: non afferro la logica

    Ciao a tutti, sto realizzando un programma in vb6 che scriva da un file ASCII corrispondente al tracciato EDI contenente fatture di vendita e scriva solo alcuni valori in un altro file, ma ho problemi ad impostare i cicli di lettura e scrittura.
    Queste le operazioni che eseguo, in pseudocodice:

    codice:
    Open txtPercorsoFileOrigine.Text For Input As #1   'Apro il file origine
    Open "C:\TRAF2000" For Append as #2                'Apro il file destinazione
    Do
    Line input #1, lineal                                  'lineal è la mia riga
    tiporiga = Mid$(lineal, 1, 3)                        'da questo mi capisco che tipo di linea sto leggendo
    if tiporiga = "BGM" Then                             'Se tiporiga=BGM è l'inizio del pacchetto che devo scrivere nel file
         '....                                                  'Scrivo nel file i campi che mi interessano
         tipodoc = Mid$(lineal, 110, 6)                'Leggo i campi di origine
         tipodocMulti = tipodoc                         '...e assegno i valori a variabili che poi userò x scrivere nel file di destinazione
    Elseif tiporiga = "NAI" then
         'prendo altra roba
         '...
    End if
    'Fatto questo scrivo nel file
    print #2, tipodocMulti, datadoc, ecc...
    
    Loop until EOF(1)
    Il problema della logica nasce dal fatto che io scrivo all'interno del file già durante il primo ciclo, e ho impostato le condizioni con gli if, quindi nel file finale avrò un rigo con tutti i record BGM, poi tutti i record NAI, e così via, mentre io nel file finale devo avere un solo rigo per ogni fattura, quindi contenente sullo stesso rigo prima BGM, di seguito NAI, ecc... ma se io scrivo contestualmente nel file va a finire che con il primo if io leggo la riga BGM e scrivo nel file, ricomincio il ciclo e leggo la riga NAI e la scrivo A CAPO nel file, in maniera errata.

    Per meglio spiegarmi in due parole, il ciclo di lettura del file di origine inizia con il tiporiga = BGM e finisce quando nel file di lettura incontro per la seconda volta tiporiga = BGM, oppure quando tiporiga = TMA, che è l'ultima riga nel tracciato contenente i totali, e che pure mi serve
    Mi aiutate a capirci come devo strutturare i cicli di lettura e scrittura?
    Kool K

  2. #2
    Utente di HTML.it L'avatar di koolk
    Registrato dal
    Sep 2007
    Messaggi
    89
    Una (probabile) risposta me la do da solo: se metto l'operazione di scrittura all'interno dell'ultimo If del ciclo, quello che legge se il tiporiga = "NAI" dovrei essere sicuro di:
    - essere arrivato all'ultima riga del "blocco" che parte da BGM e finisce a NAI (compreso)
    - ho valorizzato tutte le variabili con i campi che mi servono per quel blocco, perchè non sono ancora uscito fuori dal ciclo
    - scrivo tutto l'output sullo stesso rigo

    Un'altra soluzione potrebbe essere adottare un valore sentinella, che imposto a false durante tutti gli If precedenti, e lo pongo a true quando arrivo all'ultima riga del blocco. Quando sentinella = true, scrivo su file di destinazione

    Qualche commento alle possibili soluzioni? O sto tirando fuori una cagata pazzesca?
    Kool K

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.