Character Counts

« Older   Newer »
  Share  
*Sym98*
CAT_IMG Posted on 27/12/2011, 10:41     +1   -1




Ciao a tutti, ieri sera ho sviluppato un programma per mia madre, la quale aveva l'esigenza di contare i caratteri e le righe presenti all'interno del suo romanzo. Niente di speciale, è giusto per riempire un pò il forum. La grafica è semplice e le funzioni sono intuitive, quindi non vi spiego come si usa. :P

Source:

CODICE
#include <GuiConstants.au3>
#include <File.au3>

$MainGui = GUICreate("Character Counts", Default, 300)
$LTitle = GUICtrlCreateLabel("Character Counts", 80, 10, 400, 20)
$IFile = GUICtrlCreateInput("", 5, 40, 280, 20)
$BFile = GUICtrlCreateButton("Sfoglia", 290, 38, 105, 25)
$EText = GUICtrlCreateEdit("", 5, 70, 385, 150)
$BStart = GUICtrlCreateButton("Start", 5, 230, 390, 25)
$PLoading = GUICtrlCreateProgress(5, 262, 390, 15)
$LLoading = GUICtrlCreateLabel("0%", 190, 278, 390, 15)

GUISetState(@SW_SHOW)

GUICtrlSetFont($LTitle, 12, 800, 2, "VIRTUAL DJ")
GUICtrlSetColor($LTitle, 0x000000)
GUICtrlSetState($IFile, $GUI_Disable)
GUICtrlSetFont($BStart, 12, 800, 2, "Comic Sans MS")
GUICtrlSetFont($LLoading, 10, 800, 2, "Comic Sans MS")

While 1
       $PercorsoFile = GUICtrlRead($IFile)
       $nMsg = GUIGetMsg()
       Switch $nMsg
               Case $GUI_EVENT_CLOSE
                       Exit
               Case $BFile
                       $PercorsoFile = FileOpenDialog("Seleziona un file", @DesktopDir, "All Files (*.*)")
                       If Not @error Then GUICtrlSetData($IFile, $PercorsoFile)
                       $Read = FileRead($PercorsoFile)
                       If $Read <> "" Then GUICtrlSetData($EText, $Read)
               Case $BStart
                       If $PercorsoFile <> "" Then
                               GUICtrlSetState($EText, $GUI_Disable)
                       Else
                               GUICtrlSetData($EText, "Selezionare un file!")
                       EndIf
                       Global $TotChar = 0, $MinChar = 0
                       For $i = _FileCountLines($PercorsoFile) to 1 Step -1
                               $CurrentLine = FileReadLine($PercorsoFile, $i)
                               $TotChar += StringLen($CurrentLine)
                               GUICtrlSetData($PLoading, 1 * 100 / $i)
                               GUICtrlSetData($LLoading, Round(1 * 100 / $i) & "%")
                       Next
                       $TotRighe = _FileCountLines($PercorsoFile)
                       Sleep(500)
                       GUICtrlSetData($EText, "-------------------------------------------Analisi file completata!------------------------------------------" & @CRLF & @CRLF & _
                       "Numero righe: " & $TotRighe & @CRLF & "Numero caratteri: " & $TotChar & @CRLF & @CRLF & _
                       "-------------------------------------------------------Testo:-------------------------------------------------------" & @CRLF & @CRLF & $Read)
                       GUICtrlSetState($EText, $GUI_Enable)
       EndSwitch
WEnd



FrontBack - Security Decompiler Team

SecureFile: QUI

P.S = Adesso assillerò Master fin quando non aggiornerà la Lista Programmi. :troll:

Edited by FrontBack - 24/1/2013, 18:23
 
Top
CAT_IMG Posted on 27/12/2011, 12:00     +1   -1

wtf?

Group:
Member
Posts:
2,141
Reputazione:
0
Location:
/etc/

Status:


Probabilmente per il numero di caratteri potevi utilizzare FileGetSize ... se si chiama così XD però non so ...
 
Web   Top
*Sym98*
CAT_IMG Posted on 27/12/2011, 12:43     +1   -1




Non conoscevo questa funzione.
Certo che non si finisce mai di imparare. ^^
 
Top
I.Ren
CAT_IMG Posted on 27/12/2011, 22:32     +1   -1




carino anche se dire che è semplicerrimo è dire poco
 
Top
CAT_IMG Posted on 27/12/2011, 23:51     +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


Perché processi riga per riga? o.O
 
Top
*Sym98*
CAT_IMG Posted on 28/12/2011, 11:19     +1   -1




CITAZIONE (I.Ren @ 27/12/2011, 22:32)
carino anche se dire che è semplicerrimo è dire poco

In effetti io stesso ho detto che non è un programma complicato, infatti l'ho fatto in un'ora.

CITAZIONE (*Sym98* @ 27/12/2011, 10:41)
Niente di speciale, è giusto per riempire un pò il forum.

CITAZIONE (ƒritzer @ 27/12/2011, 23:51) 
Perché processi riga per riga? o.O

Mi è venuto più intuitivo e pratico, sul momento non ho pensato a fare:

CODICE
$TotChar = StringLen($Read)

 
Top
I.Ren
CAT_IMG Posted on 28/12/2011, 11:59     -3   +1   -1




CITAZIONE (*Sym98* @ 28/12/2011, 11:19) 
CITAZIONE (I.Ren @ 27/12/2011, 22:32)
carino anche se dire che è semplicerrimo è dire poco

In effetti io stesso ho detto che non è un programma complicato, infatti l'ho fatto in un'ora.

UNA ora? O_O intendi dire che per 50 minuti ti sei guardato in giro e in 10 minuti l'hai fatto, spero
 
Top
CAT_IMG Posted on 28/12/2011, 12:08     +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


CITAZIONE (I.Ren @ 28/12/2011, 11:59) 
CITAZIONE (*Sym98* @ 28/12/2011, 11:19) 
In effetti io stesso ho detto che non è un programma complicato, infatti l'ho fatto in un'ora.

UNA ora? O_O intendi dire che per 50 minuti ti sei guardato in giro e in 10 minuti l'hai fatto, spero

Beh, devi capire che c'è chi programma in modo naturale e c'è chi è agli inizi... In effetti per un programma così 10 minuti sono già tanti per noi, ma magari non per lui...
 
Top
thanzeon
CAT_IMG Posted on 28/12/2011, 13:53     +1   -1




Carino, ma non funziona per i file di grandi dimensioni... l'ho unsato per una dll da 13 MB ed ecco il risultato :P
CODICE
-------------------------------------------Analisi file completata!------------------------------------------

Numero righe: 1
Numero caratteri: 117

-------------------------------------------------------Testo:-------------------------------------------------------

MZ


notepad non me lo caricava nemmeno xD
 
Top
Aaly
CAT_IMG Posted on 28/12/2011, 13:57     +1   -1




Un file .dll contiene un testo codificato.
Lo script conta solo i caratteri normali, come questi con cui sto rispondendo..
 
Top
thanzeon
CAT_IMG Posted on 28/12/2011, 14:01     +1   -1




riprovo txt
 
Top
CAT_IMG Posted on 28/12/2011, 14:26     +1   -1

So implementare gli object

Group:
Admin
Posts:
1,215
Reputazione:
+150

Status:


CITAZIONE (Aaly @ 28/12/2011, 13:57) 
Un file .dll contiene un testo codificato.
Lo script conta solo i caratteri normali, come questi con cui sto rispondendo..

Del tutto scorretto direi, si tratta di dati binari e tra l'altro se ci sono stringhe ASCII non sono neanche codificate... Apri qualche libreria con Notepad.
 
Top
Aaly
CAT_IMG Posted on 28/12/2011, 14:40     +1   -1




Hai ragione ƒritzer, mi sono espresso male.
Tuttavia ci sono caratteri che il programma non conta.
 
Top
*Sym98*
CAT_IMG Posted on 28/12/2011, 15:05     +1   -1




CITAZIONE (I.Ren @ 28/12/2011, 11:59)
UNA ora? O_O intendi dire che per 50 minuti ti sei guardato in giro e in 10 minuti l'hai fatto, spero

No, l'ho fatto in un'ora.
Se vuoi maggiori dettagli, ti dirò che ho cambiato la grafica tre volte, e che solo per quella ho impiegato 50 minuti.
Molto più utile di guardarsi intorno, non credi?

CITAZIONE (ƒritzer @ 28/12/2011, 12:08) 
Beh, devi capire che c'è chi programma in modo naturale e c'è chi è agli inizi... In effetti per un programma così 10 minuti sono già tanti per noi, ma magari non per lui...

Comunque non credo di essere agli inizi, non con Autoit.

CITAZIONE (thanzeon @ 28/12/2011, 13:53)
Carino, ma non funziona per i file di grandi dimensioni... l'ho unsato per una dll da 13 MB ed ecco il risultato :P
CODICE
-------------------------------------------Analisi file completata!------------------------------------------

Numero righe: 1
Numero caratteri: 117

-------------------------------------------------------Testo:-------------------------------------------------------

MZ


notepad non me lo caricava nemmeno xD

Spero che sia un problema legato all'estenzione del file, perchè il programma l'ho sviluppato per il romanzo di mia madre, che è abbastanza lungo. xD

CITAZIONE (Aaly @ 28/12/2011, 13:57)
Un file .dll contiene un testo codificato.
Lo script conta solo i caratteri normali, come questi con cui sto rispondendo..

Quoto, infatti avevo provato ad aprire un file .exe, e veniva letto solo qualche carattere, un pò come è successo a thanzeon con la dll.
 
Top
I.Ren
CAT_IMG Posted on 28/12/2011, 15:23     -2   +1   -1




un char corrisponde a un byte

in un file ascii ogni byte è dunque uguale ad un char

quindi con filegetsize() trovavi la grandezza in byte e la conseguente lungehzza del testo. Non serviva parsare linea per linea, non serviva la progress bar né la percentuale perchè a vedere la grandezza del file è istantaneo. Tempo di esecuzione massimo, usando quella funzione: 5 minuti, il tempo che avrei speso io per fare il programma. 55 minuti in meno del tuo ed esce un programma più veloce e più efficente
 
Top
33 replies since 27/12/2011, 10:41   419 views
  Share