Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    42

    [vb2010] lettura dati da file e creazione nuovo file

    Salve ragazzi
    Allora
    ho un file di ingresso ed ho il tracciato dovrei però non contare gli spazi ma solo i caratteri
    ho buttato giù un po di codice ma non riesco a contare solo i caratteri chi mi può aiutare????

    questo è il codice
    codice:
    Sub Main()
    
            Dim FileDaAprire As String = "C:\tmp\PPTRCG.D" 'path dove si trova il file
    
            'Dim FileDaAprire As String() = Command().Split(" ")
    
            Dim Righe As String() = File.ReadAllLines(FileDaAprire)
    
            Dim FileDaScrivere As StreamWriter = New StreamWriter("C:\tmp\filecreato.txt", False) 'path file di input
    
            For Each Riga In Righe
    
                'campi da leggere. la lettura parte da 0 e non da 1
    
                Dim CodContt As String = Riga.Substring(0, 1)
    
                Dim CodDit As String = Riga.Substring(1, 6)
    
                Dim CodAttv As String = Riga.Substring(7, 2)
    
                Dim CodCenDiCosCont As String = Riga.Substring(9, 21)
    
                Dim AAPerdElabn As String = Riga.Substring(21, 25)
    
                Dim MMPerdElabn As String = Riga.Substring(25, 26)
    
                FileDaScrivere.WriteLine(CodContt + ";" + CodDit + ";" + CodAttv + ";" + CodCenDiCosCont + ";" + AAPerdElabn + ";" + MMPerdElabn)
    
                
    
            Next Riga
    
            FileDaScrivere.Flush()
    
            FileDaScrivere.Close()
    
        End Sub
    grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Mostrare il codice non è sufficiente.
    Devi indicare esattamente le linee in cui ti aspetti qualcosa che invece non accade come vorresti.

    Hai fatto il debug del codice?
    Se sì, con quale risultato?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    42
    il codice funziona ma conta i anche i caratteri vuoti e a me serve che non li conta

    un sempio del file di origine
    2000000 201003 1100 100000000000004

    un esempio di come dovrebbe venire il file di destinazione
    2;000000;2;100311001;0000 ecc

    ora nella procedura mi conta anche gli spazi tra 2000000 e 201003

    e quindi il file di destinazione esce
    2;000000; ; 201003 ;201003

    spero di essere stato chiaro

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... i caratteri "vuoti" non sono vuoti ma sono spazi. E' ovvio che vengano contati.

    Se gli spazi stanno sempre in quelle posizioni, considerali e modifica i parametri passati a tutte le chiamate a Substring
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da lucaesp
    il codice funziona ma conta i anche i caratteri vuoti e a me serve che non li conta

    un sempio del file di origine
    2000000 201003 1100 100000000000004

    un esempio di come dovrebbe venire il file di destinazione
    2;000000;2;100311001;0000 ecc

    ora nella procedura mi conta anche gli spazi tra 2000000 e 201003

    e quindi il file di destinazione esce
    2;000000; ; 201003 ;201003

    spero di essere stato chiaro
    Non hai detto niente di nuovo che non sapessimo già.
    Intanto 'contare' è un termine sbagliato ed è fuorviante, non c'è niente da contare (mi pare).

    Comunque vedendo il file di origine a me verrebbe spontaneo fare una Split() basata sul 'carattere vuoto' per ottenere un array (cosa che avevi fatto anche tu, ma l'hai commentata).
    Ovviamente in questo caso si creeranno anche degli elementi che conterranno 'solo caratteri vuoti'.
    Poi, scorrendo l'array ottenuto, concatenerei solo gli elementi escludendo quelli 'vuoti' usando Trim().


  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    42
    ok a me interessa che cmq nel file di destinazione non vengano inseriti i caratteri vuoti come posso eliminarli?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... ti è stato detto come fare in 2 modi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    42
    ragazzi ho scrittto un po di codice ma secondo me ho fatto un casino qualcuno può dargli una parvenza migliore anche se devo inviare i file grazie

    codice:
    Sub Main()
    
    
    
            Dim FileDaAprire As String = "C:\tmp\PPTRCG.D" 'path dove si trova il file
    
            'Dim FileDaAprire As String() = Command().Split(" ")
    
            Dim Righe As String() = File.ReadAllLines(FileDaAprire)
    
            Dim FileDaScrivere As StreamWriter = New StreamWriter("C:\tmp\filecreato.txt", False) 'path file di input
    
            Dim ControlloDip As String
    
            Dim NomeGIRMA As String = "GIRMA"
            Dim NomeMAXCOM As String = "MAXCO"
            Dim NomeFINGO As String = "FINGO"
    
            Dim SubStrCodSoggDit As String
            Dim conta As Integer
    
            For Each Riga In Righe
    
                'campi da leggere. la lettura parte da 0 e non da 1
    
                Dim CodContt As String = Riga.Substring(0, 1)
                'CodContt = Trim(CodContt)
    
                Dim CodDit As String = Riga.Substring(1, 6)
                'CodDit = Trim(CodDit)
    
                Dim CodAttv As String = Riga.Substring(7, 2)
                'CodAttv = Trim(CodAttv)
    
                Dim CodCenDiCosCont As String = Riga.Substring(9, 12)
                'CodCenDiCosCont = Trim(CodCenDiCosCont)
    
                Dim AAPerdElabn As String = Riga.Substring(21, 4) 'AAMMPerdElabn
                'AAPerdElabn = Trim(AAPerdElabn)
    
                Dim MMPerdElabn As String = Riga.Substring(25, 2) 'AAMMPerdElabn
                'MMPerdElabn = Trim(MMPerdElabn)
    
                Dim CodConDare As String = Riga.Substring(27, 12)
                'CodConDare = Trim(CodConDare)
    
                Dim CodConAve As String = Riga.Substring(39, 12)
                'CodConAve = Trim(CodConAve)
    
                Dim ImpMovm1 As String = Riga.Substring(51, 9)
                'ImpMovm1 = Trim(ImpMovm1)
    
                Dim ImpMovm2 As String = Riga.Substring(60, 2)
                'ImpMovm2 = Trim(ImpMovm2)
    
                Dim CadSegImprNegt As String = Riga.Substring(62, 1) 'deve assumere valore meno quando importo è negativo
                'CadSegImprNegt = Trim(CadSegImprNegt)
    
                Dim CodTipoCaus As String = Riga.Substring(63, 2)
                'CodTipoCaus = Trim(CodTipoCaus)
    
                Dim DesTipoCaus As String = Riga.Substring(65, 10)
                'CodTipoCaus = Trim(CodTipoCaus)
    
                Dim CodCaus As String = Riga.Substring(75, 4)
                'CodCaus = Trim(CodCaus)
    
                Dim DesCaus As String = Riga.Substring(79, 30)
                DesCaus = Trim(DesCaus)
    
                Dim DesAnntnUte As String = Riga.Substring(109, 20)
                'DesAnntnUte = Trim(DesAnntnUte)
    
                Dim CodFiscDit As String = Riga.Substring(129, 16)
                'CodFiscDit = Trim(CodFiscDit)
    
                Dim CodSoggDit As String = Riga.Substring(145, 8)
                'CodSoggDit = Trim(CodSoggDit)
    
                Dim NumDit As String = Riga.Substring(153, 2)
                'NumDit = Trim(NumDit)
    
                Dim CodSoggDipn As String = Riga.Substring(155, 8)
                'CodSoggDipn = Trim(CodSoggDipn)
    
                Dim NumRappDipn As String = Riga.Substring(163, 3)
                'NumRappDipn = Trim(NumRappDipn)
    
                Dim NumLibMatrDipn As String = Riga.Substring(166, 6)
                'NumLibMatrDipn = Trim(NumLibMatrDipn)
    
                'Dim CodRiprnCont As String = Riga.Substring(172, 160) 'CodRiprnCont-array tutta la riga
                'CodRiprnCont = Trim(CodRiprnCont)
    
                Dim CodTipoDatoRipn As String = Riga.Substring(172, 2) 'CodRiprnCont-array Riga suddivisa per campi
                'CodTipoDatoRipn = Trim(CodTipoDatoRipn)
    
                Dim CodDatoRipn As String = Riga.Substring(174, 3) 'CodRiprnCont-array Riga suddivisa per campi
                'CodDatoRipn = Trim(CodDatoRipn)
    
                Dim CodRipn As String = Riga.Substring(177, 15) 'CodRiprnCont-array Riga suddivisa per campi
                CodRipn = Trim(CodRipn)
    
                Dim CodRiprnContFine As String = Riga.Substring(192, 140) 'CodRiprnCont-array Riga suddivisa per campi
                'CodRiprnContFine = CodRiprnContFine(CodRiprnContFine)
    
                'Dim Xfill1 As String = Riga.Substring(332, 47)
                'Xfill1 = Trim(Xfill1)
    
                'FileDaScrivere.WriteLine(CodContt + ";" + CodDit + ";" + CodAttv + ";" + CodCenDiCosCont + ";" + AAPerdElabn + MMPerdElabn + ";" + CodConDare + ";" + CodConAve + ";" + ImpMovm1 + ";" + ImpMovm2 + ";" + CadSegImprNegt + ";" + CodTipoCaus + ";" + DesTipoCaus + ";" + CodCaus + ";" + DesCaus + ";" + DesAnntnUte + "," + CodFiscDit + ";" + CodSoggDit + ";" + NumDit + ";" + CodSoggDipn + ";" + NumRappDipn + ";" + NumLibMatrDipn + ";" + CodTipoDatoRipn + CodDatoRipn + CodRipn + CodRiprnContFine + ";" + Xfill1)
    
                'ABBREVIAZIONE NOME DITTA
    
                CodSoggDit = Riga.Substring(145, 5)
    
                If CodSoggDit = NomeGIRMA Then
                    SubStrCodSoggDit = "GI"
                ElseIf CodSoggDit = NomeMAXCOM Then
                    SubStrCodSoggDit = "MX"
                ElseIf CodSoggDit = NomeFINGO Then
                    SubStrCodSoggDit = "FG"
                Else
                    FileDaScrivere.WriteLine("ERRORE CODIFICA SOCIETA'")
                End If
    
                ' FINE ABBREVIAZIONE NOME DITTA
    
    
                ' MESE IN LETTERE
                Dim MeseLettere As String
                Dim UltimoGiorno As String
    
                Select Case (MMPerdElabn)
                    Case "01"
                        MeseLettere = "Gennaio"
                        UltimoGiorno = "31"
                    Case "02"
                        MeseLettere = "Febbraio"
                        UltimoGiorno = "28"
                    Case "03"
                        MeseLettere = "Marzo"
                        UltimoGiorno = "31"
                    Case "04"
                        MeseLettere = "Aprile"
                        UltimoGiorno = "30"
                    Case "05"
                        MeseLettere = "Maggio"
                        UltimoGiorno = "31"
                    Case "06"
                        MeseLettere = "Giugno"
                        UltimoGiorno = "30"
                    Case "07"
                        MeseLettere = "Luglio"
                        UltimoGiorno = "31"
                    Case "08"
                        MeseLettere = "Agosto"
                        UltimoGiorno = "31"
                    Case "09"
                        MeseLettere = "Settembre"
                        UltimoGiorno = "30"
                    Case "10"
                        MeseLettere = "Ottobre"
                        UltimoGiorno = "31"
                    Case "11"
                        MeseLettere = "Novembre"
                        UltimoGiorno = "30"
                    Case "12"
                        MeseLettere = "Dicembre"
                        UltimoGiorno = "31"
                    Case Else
                        FileDaScrivere.WriteLine("ERRORE CODIFICA MESE IN LETTERE")
    
                End Select
                ' FINE MESE IN LETTERE
    
                If ControlloDip <> CodSoggDipn Then
                    ' RIGA DI TESTATA
                    FileDaScrivere.WriteLine("G" + ";" + SubStrCodSoggDit + ";" + "PAB" + ";" + ";" + AAPerdElabn + MMPerdElabn + UltimoGiorno + ";" + "Stipendi" + " " + MeseLettere + " " + AAPerdElabn + ";" + ";" + ";" + "EUR" + ";" + "1" + ";" + CodRipn + ";")
                    ' FINE RIGA DI TESTATA
                    ControlloDip = CodSoggDipn
    
                    Dim FileCodificaConti As String = "C:\tmp\codificaconti.txt" 'path dove si trova il file
                    Dim RigheConti As String() = File.ReadAllLines(FileCodificaConti)
    
                    For Each RigaConti In RigheConti
                        Dim ContoOld As String = RigaConti.Substring(0, 4)
                        Dim ContoNew As String = RigaConti.Substring(5, 6)
                        CodConDare = Trim(CodConDare)
                        CodConAve = Trim(CodConAve)
    
                        If ((ContoOld = CodConDare) Or (ContoOld = CodConAve)) Then
    
                            'FileDaScrivere.WriteLine("D" + ";" + ContoNew)
    
                            CodConDare = Trim(CodConDare)
                            CodConAve = Trim(CodConAve)
                            Dim SubStringCodConDare As String = CodConDare.Substring(0, 1)
                            Dim SubStringCodConAve As String = CodConAve.Substring(0, 1)
                            'FileDaScrivere.WriteLine(CodConDare + ";" + SubStringCodConDare + "-" + CodConAve + ";" + SubStringCodConAve)
                            If ((SubStringCodConDare = "1") And (SubStringCodConAve = "1")) Then
                                For conta = 1 To 1 Step 1
                                    'FileDaScrivere.WriteLine(conta)
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + CodRipn + ";" + "-1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + "riferimento partita" + ";")
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + ";" + "1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + ";" + ContoNew)
    
                                Next
                                Exit For
    
                            Else
                                FileDaScrivere.WriteLine("Else creazione riga d dopo prima riga")
                            End If
    
                        End If
    
                    Next
    
                Else
                    ' RIGA DI MOVIMENTO
                    Dim FileCodificaConti As String = "C:\tmp\codificaconti.txt" 'path dove si trova il file
                    Dim RigheConti As String() = File.ReadAllLines(FileCodificaConti)
                    For Each RigaConti In RigheConti
                        Dim ContoOld As String = RigaConti.Substring(0, 4)
                        Dim ContoNew As String = RigaConti.Substring(5, 6)
                        CodConDare = Trim(CodConDare)
                        CodConAve = Trim(CodConAve)
    
    
                        If ((ContoOld = CodConDare) Or (ContoOld = CodConAve)) Then
    
                            'FileDaScrivere.WriteLine("D" + ";" + ContoNew)
    
                            CodConDare = Trim(CodConDare)
                            CodConAve = Trim(CodConAve)
                            Dim SubStringCodConDare As String = CodConDare.Substring(0, 1)
                            Dim SubStringCodConAve As String = CodConAve.Substring(0, 1)
                            'FileDaScrivere.WriteLine(CodConDare + ";" + SubStringCodConDare + "-" + CodConAve + ";" + SubStringCodConAve)
                            If ((SubStringCodConDare = "1") And (SubStringCodConAve = "1")) Then
                                For conta = 1 To 1 Step 1
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + CodRipn + ";" + "-1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + "riferimento partita" + ";")
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + ";" + "1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + ";" + ContoNew)
                                Next
                                Exit For
    
                            Else
                                For conta = 1 To 1 Step 1
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + CodRipn + ";" + "-1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + "riferimento partita" + ";")
                                    FileDaScrivere.WriteLine("D" + ";" + ContoNew + ";" + ";" + "1" + ";" + ImpMovm1 + "," + ImpMovm2 + ";" + DesCaus + ";" + ";" + ContoNew)
                                    FileDaScrivere.WriteLine("A" + ";" + ContoNew + ";" + "funzione" + ";" + CodRipn + ";" + CodRipn + ";" + ";" + "Libero" + ";" + "0" + ";" + ";" + ImpMovm1 + "," + ImpMovm2)
                                Next
                                Exit For
                            End If
    
                        End If
    
    
                    Next RigaConti
    
    
    
                End If
    
            Next Riga
    
    
            FileDaScrivere.Flush()
    
            FileDaScrivere.Close()
    
        End Sub

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da lucaesp
    ragazzi ho scrittto un po di codice ma secondo me ho fatto un casino qualcuno può dargli una parvenza migliore anche se devo inviare i file grazie
    Come ti è stato già detto, sei tu a doverti prendere la briga di analizzare il tuo codice ed esporre i problemi che riscontri, o gli errori o gli effetti diversi da quelli che desideri; non sono gli utenti a dover ogni volta ricopiare lo stralcio di codice di turno, farsi il debugging, scovare i difetti, proporre le migliorie e così via.

    Questo non è un luogo di assistenza tecnica diretta in forma gratuita: tutti dovrebbero collaborare alla buona riuscita di una discussione, senza attendere che i partecipanti si accollino interamente i problemi altrui e svolgano il lavoro al posto degli altri.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    42
    Ok

    penso di aver finito tutto il codice che mi compila il file finale

    ora vorrei dare la possibilità all'utente di cambiare i file da dove leggere e il nome di quello di output tramite form mi potete aiutare????

    grazie

    codice:
            Dim FileDaAprire As String = "C:\tmp\Aprile.D" 'path dove si trova il file
    
            Dim FileDaScrivere As StreamWriter = New StreamWriter("C:\tmp\filecreato.txt", False) 'path file di input
    
          
            Dim FileCodificaConti As String = "C:\tmp\cdca.txt" 'path dove si trova il file
            Dim RigheConti As String() = File.ReadAllLines(FileCodificaConti)
            For Each RigaConti In RigheConti
                Dim ContoOld As String = RigaConti.Substring(0, 5)
                Dim ContoNew As String = RigaConti.Substring(11, 6)
    
                If CodRipn = ContoOld Then
    
                    Funzione = ContoNew
    
                End If
    
            Next RigaConti
    
            
        End Function
    End Module

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.