Condividi:        

Apri il file txt, comunica se trovi o non trovi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Apri il file txt, comunica se trovi o non trovi

Postdi Tool » 18/06/09 10:38

ciao ho un file txt, quella di seguito è la parte di file che devo prendere in considerazione, non capita sempre nella stessa riga:

DMI Memory Device
-----------------
designation DIMM 1
format SODIMM
type unknown
total width 64 bits
data width 64 bits
size 1024 MBytes


DMI Memory Device
-----------------
designation DIMM 2
format SODIMM
type unknown


io devo solamente dire al programma "QUANDO LA PARTE RIFERITA A DIMM 2 NON MOSTRA "size" allora msgbox "dimm mancante", viceversa dimm msgbox dimm "ok".
Io avevo iniziato così: (il tutto accade premendo un pulsante):

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim FileName As String
Dim fso, f
Dim Read As String
Dim Found As Boolean

Found = False

FileName = "C:\database\prova.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(FileName, ForReading)

Do While f.AtEndOfStream = False
Read = f.ReadLine

If Read = "DMI Memory Device" Then

Found = True

End If


il mio problema è andare a beccare la presenza di "size" di "DMi Memory Device" di "DIMM 2".

ciao&grazie1000
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Sponsor
 

Re: Apri il file txt, comunica se trovi o non trovi

Postdi ricky53 » 18/06/09 14:10

Caio,
devi scrivere del codice che faccia queste operazioni (o molto simili):
leggi, se trovi "DMI Memory Device"
allora
rileggi, se trovi "designation DIMM 2"
allora
rileggi, se non trovi "size"
allora
devi dare messaggio ---> msgbox "dimm mancante"

Sei in grado di elaborarlo e scriverlo?

Forza prova

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Flash30005 » 18/06/09 21:38

Allora, prova a vedere se ti va bene questa macro

Codice: Seleziona tutto
Sub CercaSize()
ContaR = 0
ContaDMI = 0
M_RigaDMI = 0
RigaDMI = 1
ContaSize = 1
Open "C:\Database\prova.txt" For Input As #1
Do Until EOF(1)
    ContaR = ContaR + 1
    Line Input #1, riga
    'MsgBox Trim(Mid(riga, 1, 4))
    If Trim(Mid(riga, 1, 3)) = "DMI" Then
    M_RigaDMI = RigaDMI
        ContaDMI = ContaDMI + 1
        RigaDMI = ContaR
    End If
    If Trim(Mid(riga, 1, 4)) = "size" Then
        ContaSize = ContaSize + 1
        MsgBox "Dimm Ok", vbInformation
    Else
        If ContaDMI > ContaSize Then
            MsgBox "Dimm Mancante alla riga " & M_RigaDMI, vbCritical, "Attenzione"
            ContaSize = ContaSize + 1
        End If
    End If
Loop
Close #1
If ContaDMI = ContaSize Then MsgBox "Dimm Mancante alla riga " & M_RigaDMI, vbCritical, "Attenzione"
End Sub

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Anthony47 » 18/06/09 22:17

Volendo pero' lo puoi anche fare in excel:
-copi (o importi) il tuo file in colonna A da riga 2
-poi in B2 metti la formula
Codice: Seleziona tutto
=SE(SINISTRA(A2;16)="designation DIMM";SE(C1>0;11;1);SE(SINISTRA(A2;5)="size ";0;C1)

Tutti i blocchi che hanno 11 in colonna B sono preceduti da un blocco senza l' informazione "size"; dovrebbe essere piu' facile da gestire che un elenco di Ok e Non Ok; dipende comunque da quello che ci devi fare "dopo".

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Apri il file txt, comunica se trovi o non trovi

Postdi ricky53 » 18/06/09 23:21

Ciao,
ma non andava fatto un controllo sulla presenza di "DIMM 2" ???

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Tool » 19/06/09 09:04

flash io devo trovare solamente il "size" riguardante "DIMM 2", invece nella tua macro trovo tutti i "size" presenti nel txt.

grazie.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Flash30005 » 19/06/09 21:45

Beh, allora è più semplice...
Codice: Seleziona tutto
Sub CercaSize2()
ContaR = 0
M_RigaDMI = 0
RigaDMI = 1
Open "C:\Database\prova.txt" For Input As #1
Do Until EOF(1)
    ContaR = ContaR + 1
    Line Input #1, Riga
    If Trim(Mid(Riga, 13, 6)) = "DIMM 2" Then
    M_RigaDMI = ContaR
    For Ri = 1 To 5
        Line Input #1, Riga
        If EOF(1) Then GoTo Fine
    Next Ri
        If Trim(Mid(Riga, 1, 4)) = "size" Then
            MsgBox "Dimm Ok", vbInformation
        Else
            MsgBox "Dimm Mancante alla riga " & M_RigaDMI, vbCritical, "Attenzione"
        End If
    End If
Fine:
Loop
Close #1
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Tool » 22/06/09 07:30

ciao Flash, aziono la macro da pulsante ma non succede nulla.

ciao&grazie.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Tool » 22/06/09 07:56

ciao, ti linko la parte del file prova che mi interessa (da inizio pagina a size c'è un TAB)

http://img514.imageshack.us/img514/9849/provaj.jpg

ciao
grazie1000.
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Flash30005 » 22/06/09 09:28

Tool ha scritto:ciao, ti linko la parte del file prova che mi interessa (da inizio pagina a size c'è un TAB)

http://img514.imageshack.us/img514/9849/provaj.jpg


L'immagine inviata mostra un file testo diverso dal tuo primo post :aaah
Ecco perché non funziona

Ora mi dici che c'è un tab all'inizio in questo caso devi modificare questa riga da
Codice: Seleziona tutto
    If Trim(Mid(Riga, 13, 6)) = "DIMM 2" Then

a
Codice: Seleziona tutto
    If Trim(Mid(Riga, 14, 6)) = "DIMM 2" Then

e
Codice: Seleziona tutto
       If Trim(Mid(Riga, 1, 4)) = "size" Then

così
Codice: Seleziona tutto
 If Trim(Mid(Riga, 2, 4)) = "size" Then

ma penso che continui a non funzionare perché vedo degli spazi o tab tra "designation" e DIMM X
quindi una altro carattere da aggiungere? (O più caratteri se sono spazi)
Avresti fatto meglio a postare il file testo :evil:

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Tool » 22/06/09 10:06

SCUSAMI, COMUNQUE ORA FUNZIONA PERFETTAMENTE.

Grazie
Ciao
Avatar utente
Tool
Utente Junior
 
Post: 37
Iscritto il: 21/04/09 13:26

Re: Apri il file txt, comunica se trovi o non trovi

Postdi Flash30005 » 22/06/09 14:50

Tool ha scritto:SCUSAMI, COMUNQUE ORA FUNZIONA PERFETTAMENTE.


Non proprio, mi sono accorto dall'immagite da te inviata che se DIMM 2 si trova tra le ultime righe del file e non c'è la riga "size" quella DIMM 2 non viene conteggiata perché il programma esce essendo giunto all'ultima riga del file quindi dovrai fare una piccola modifica con un controllo del conteggio DIMM 2 e dei Size in questa maniera
Codice: Seleziona tutto
Sub CercaSize2()
ContaR = 0
M_RigaDMI = 0
RigaDMI = 1
ContaDMI = 0      '<<<  variabile aggiunta
ContaSize = 0      '<<<  variabile aggiunta
Open "C:\Database\prova.txt" For Input As #1
Do Until EOF(1)
    ContaR = ContaR + 1
    Line Input #1, Riga
    If Trim(Mid(Riga, 14, 6)) = "DIMM 2" Then
    M_RigaDMI = ContaR
    ContaDMI = ContaDMI + 1
    For Ri = 1 To 5
        Line Input #1, Riga
        If EOF(1) Then GoTo Fine
    Next Ri
        If Trim(Mid(Riga, 2, 4)) = "size" Then
        ContaSize = ContaSize + 1
            MsgBox "Dimm Ok", vbInformation
        Else
            MsgBox "Dimm Mancante alla riga " & M_RigaDMI, vbCritical, "Attenzione"
        End If
    End If
Fine:
Loop
Close #1
If ContaDMI > ContaSize Then MsgBox "Dimm Mancante alla riga " & M_RigaDMI, vbCritical, "Attenzione"   '<<< riga controllo conteggio
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "Apri il file txt, comunica se trovi o non trovi":


Chi c’è in linea

Visitano il forum: papiriof e 55 ospiti