Autore Topic: Front-end di applicazione da terminale  (Letto 2295 volte)

  • Visitatore
Front-end di applicazione da terminale
« il: 14 Marzo 2008, 21:08:46 »
grazie per l'aiuto su sqlite.ho creato un gestore di db per mio figlio che va un amore.adesso sono impegnato in un front-end per ClamAV.poichè avrei bisogno di vedere i file che sono in scanzione,vorrei sapere se cè un metodo/evento/propietà  
che prenda,senza usare il timer,i file in scanzione.esempio col timer(basato su quello che si trova nel doc di gambas)
Codice: [Seleziona]

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.Center
Timer1.Enabled = TRUE
END

PUBLIC SUB Form_Close()
Timer1.Enabled = FALSE
END

PUBLIC SUB Timer1_Timer()
DIM sRes AS String, sVal AS String, sTotal AS String, aRes AS String[]
DIM cVal AS NEW Collection

SHELL "cat /proc/meminfo" TO sRes

FOR EACH sVal IN Split(sRes, "\n", "", TRUE)
    aRes = Split(sVal, " ", "", TRUE)
    cVal[Left$(aRes[0], -1)] = aRes[1]
NEXT
sTotal = cVal!MemTotal - cVal!MemFree - cVal!Buffers - cVal!Cached + cVal!SwapTotal - cVal!SwapFree - cVal!SwapCached
TextArea1.Text = "Memoria in uso : " & (CInt(sTotal) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria totale : " & (CInt(cVal!MemTotal) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria libera : " & (CInt(cVal!MemFree) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria buffer : " & (CInt(cVal!Buffers) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria cached : " & (CInt(cVal!Cached) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria Swap(total) : " & (CInt(cVal!SwapTotal) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria Swap(libera) : " & (CInt(cVal!SwapFree) / 1024) & " mbyte" & "\n"
TextArea1.Text &= "Memoria Swap(cached) : " & (CInt(cVal!SwapCached) / 1024) & " mbyte"
END

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Front-end di applicazione da terminale
« Risposta #1 il: 14 Marzo 2008, 23:19:11 »
puoi usare qualcosa del genere...


Codice: [Seleziona]
' Gambas class file

PUBLIC Process AS Process

PUBLIC SUB Button1_Click()


  SHELL "clamscan -v" FOR READ

END

PUBLIC SUB Process_Read()

  DIM sLine AS String
  DIM content AS String
 
  READ #LAST, sLine, -256

  Content = Content & sLine
 editor1.Text = sLine


END

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Front-end di applicazione da terminale
« Risposta #2 il: 14 Marzo 2008, 23:32:14 »
naturalmente devi modificare il comando della shell per scansionare la directory o il file corretto,

ho fatto una prova con

Codice: [Seleziona]
shell "clamscan / -v -r " FOR READ 


ma la scansione dei vari file è talmente veloce da risultare illeggibile

  • Visitatore
Re: Front-end di applicazione da terminale
« Risposta #3 il: 15 Marzo 2008, 00:23:06 »
grazie,ho il fine settimana per provare.............

  • Visitatore
Re: Front-end di applicazione da terminale
« Risposta #4 il: 15 Marzo 2008, 12:15:57 »
il mio gambas è un pò strano.... :-)
Codice: [Seleziona]

PUBLIC Proceso AS Process

PUBLIC SUB picClamScan_MouseDown()
SHELL "clamscan -v" FOR READ AS "Proceso"
END

PUBLIC SUB Proceso_Read()
DIM sLine AS String
READ #LAST, sLine, -256
TextArea2.Text &= sLine
END

adesso va,ma non è che è molto veloce.se non ch'è un problema di priorità di eventi.in VB6 si soluzionava con DOEVENTS.in gambas??

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Front-end di applicazione da terminale
« Risposta #5 il: 15 Marzo 2008, 13:14:39 »
Ciao. clamscan non è un fulmine. Se vuoi più velocità, usa clamdscan.
Prima devi lanciare come root "clamd" e poi usi clamdscan come utente normale.
Hai un guadagno del 75% circa.
Per maggiori info dà un'occhiata alla documentazione di ClamAV. Ciao.

  • Visitatore
Re: Front-end di applicazione da terminale
« Risposta #6 il: 15 Marzo 2008, 17:11:32 »
grazie giulio,ma spiegavo che il problema della non visualizzazione su un controllo di testo non era a causa della velocità con cui ClamaAV fa la scanzione   se non per una questione di priorità di eventi.chiedevo anche se c'era una funzione come in VB tipo DOEVENTS che arginava il IN/OUT......

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Front-end di applicazione da terminale
« Risposta #7 il: 15 Marzo 2008, 18:13:36 »
Citazione

alejandro ha scritto:
grazie giulio,ma spiegavo che il problema della non visualizzazione su un controllo di testo non era a causa della velocità con cui ClamaAV fa la scanzione   se non per una questione di priorità di eventi.chiedevo anche se c'era una funzione come in VB tipo DOEVENTS che arginava il IN/OUT......


Oops... scusa. Avevo capito male. Quelle volte che ho usato Process_Read, mi è
sembrato che la reazione fosse immediata. Per questo pensavo che ti sembrasse
lento clamscan. Io non ho nessuna esperienza con VB. Ciao.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Front-end di applicazione da terminale
« Risposta #8 il: 15 Marzo 2008, 18:28:59 »
Il comando WAIT forse fa al caso tuo. Forza Gambas ad eseguire tutti i thread in sospeso durante l'esecuzione del ciclo di eventi (event loop) generato dal codice del programma (interazione dell'utente con i widget, operazioni sui file, ecc...).
Puoi anche forzare l'attesa di un tempo determinato affinché Gambas non riprenda l'esecuzione prima di un tot con WAIT nnn dove nnn è un numero in virgola mobile che rappresenta i secondi di attesa (WAIT 0.5 significa attendere 500 ms).
Visita il mio sito personale: http://www.leonardomiliani.com

  • Visitatore
Re: Front-end di applicazione da terminale
« Risposta #9 il: 15 Marzo 2008, 21:30:35 »
grazie a tutti,cmq ho soluzionato con :
Codice: [Seleziona]

SHELL "clamscan -r /home/alejandro/Documenti/Doc" WAIT FOR READ AS "Proceso"

  :-)
non appena finisco il codice vi spedisco il tutto  8-)