Newsgroup: it.comp.lang.visual-basic
Titolo: algoritmo lettura file (Aiuto)

Ciao,
spero che qualcuno mi possa aiutare (non dubito...).
Ho un file di questo tipo:
"
Persona=Roberto
Tot. ore= 12
Giorno= 10
Mese=Gennaio
N. Commesse= 10  0  0
Costruzione= 5  0  0
Montaggio  = 5  0  0
Officina Serie= 0
Sist. Camion e Attrezzatura= 0
Pulizie Varie= 0
Trasp. e Recupero Materiali= 2
Verniciatura= 0
Varie= 0
Persona=Andrea
Tot. ore= 14
Giorno= 10
Mese=Gennaio
N. Commesse= 10  0  0
Costruzione= 7  0  0
Montaggio  = 5  0  0
Officina Serie= 0
Sist. Camion e Attrezzatura= 0
Pulizie Varie= 0
Trasp. e Recupero Materiali= 2
Verniciatura= 0
Varie= 0
Persona=Roberto
Tot. ore= 10
Giorno= 10
Mese=Gennaio
N. Commesse= 10  0  0
Costruzione= 4  0  0
Montaggio  = 5  0  0
Officina Serie= 0
Sist. Camion e Attrezzatura= 0
Pulizie Varie= 0
Trasp. e Recupero Materiali= 1
Verniciatura= 0
Varie= 0
Persona=Roberto
Tot. ore= 12
Giorno= 10
Mese=Gennaio
N. Commesse= 10  45  0
Costruzione= 4  1  0
Montaggio  = 5  0  0
Officina Serie= 0
Sist. Camion e Attrezzatura= 1
Pulizie Varie= 0
Trasp. e Recupero Materiali= 0
Verniciatura= 0
Varie= 0
.................... ecc.
devo stampare solo il nome della persona (Persona=nome_persona) in una
textbox non editabile o in una caption di una label con a fianco il
totale delle ore contenuta nella variabile tot_ore sommando il numero
che cista di fianco per tutte le occorrenze della stessa persona. Quindi
per ogni persona con lo stesso nome devo prendere la variabile tot_ore e
sommarci tutte le tot_ore trovate prima e dopo. Alla fine quindi mi
ritrovo ad avere il totale di ore mensili per ogni individuo.
Credo che si possa fare ma non so come fare dato che programmo solo da
pochi giorni.
Se potete aiutarmi voi ve ne saro' grato.
Ciao
Marco.
--
Posted from 
smtp3.libero.it
 [193.70.192.53] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Marco.
Io farei qualcosa di simile a questo:
Su un modulo dichiari il tipo di dati Persona come segue:
Type typPersona
    Nome As String
    TotOre As Integer
End Type
e un array:
Public Persona() As typPersona
Poi scrivi una cosa del genere:
Private Sub CalcolaOre(NomeFile As String)
    Dim Temp As String, Chiave As String, Valore As String
    Dim tmpNome As String, c As Integer, Trovato As Boolean
    ReDim Persona(0)
    Open NomeFile For Input As #1
        Do
            Line Input #1, Temp
            Temp = UCase(Trim(Temp))
            If Temp <> "" Then
                Chiave = Left(Temp, InStr(Temp, "=") - 1)
                Valore = Right(Temp, Len(Temp) - InStr(Temp, "="))
                If Chiave = "PERSONA" Then
                    tmpNome = Valore
                ElseIf Chiave = "TOT. ORE" Then
                    Trovato = False
                    For c = 1 To UBound(Persona)
                        If Persona(c).Nome = tmpnNome Then
                            Trovato = True
                            Persona(c).TotOre = Persona(c).TotOre +
Val(Valore)
                        End If
                    Next c
                    If Not Trovato Then
                        ReDim Preserve Persona(UBound(Persona) + 1)
                        Persona(UBound(Persona)).Nome = tmpNome
                        Persona(UBound(Persona)).TotOre = Val(Valore)
                    End If
                End If
            End If
        Loop Until EOF(1)
    Close #1
End Sub
In teoria, se ho scritto tutto giusto, questa è una funzione a cui passi il
nome del file di dati e questa compila un Array con i nomi e le ore
lavorative.
Poi basta che ti leggi l'Array per trovare quello che devi visualizzare.
Spero di esserti d'aiuto
--
Diego Mazzaro
"L'importante non è conoscere tante cose ma sapere dove trovarle" A.
Einstein
http://space.tin.it/computer/btqmaz/diego