Remove tag

« Older   Newer »
  Share  
xdmisterx
CAT_IMG Posted on 26/1/2010, 16:26     +1   -1




Una piccola utility per eliminare i caratteri indesiderati da un testo(causa formattazione o passaggio da html a testo normale).
Ad esempio quando si copia una discussione di un forum e ci sono all'interno i tag ecc...,oppure ci sono delle parole da censurare. Non so, fate voi ;D:
SPOILER (click to view)
CODICE
;remove tag-by Misterx
#include <GuiConstants.au3>
#include <File.au3>
#include <GuiStatusBar.au3>

Global $title="Remove tag by Misterx"


$gui=GUICreate($title,380,140)

;sorgente
$file_label=GUICtrlCreateLabel("Sorgente =>",10,20)
$file1=GUICtrlCreateInput("",80,17,200,20)
$file_perc=GUICtrlCreateButton("Apri...",290,17,80,20)

;finale
GUICtrlCreateLabel("Salvato =>",10,50)
$save1=GUICtrlCreateInput("",80,47,200,20)
$save_perc=GUICtrlCreateButton("Salva...",290,47,80,20)

;lista
GUICtrlCreateLabel("Lista tag =>",10,80)
$tag_list=GUICtrlCreateInput("",80,77,200,20)
$tag_perc=GUICtrlCreateButton("Tag list",290,77,80,20)

;start
$start=GUICtrlCreateButton("Converti",10,110,360,20)

GUISetState()

While 1
       Switch GUIGetMsg()
       Case $gui_event_close
               Exit
       Case $file_perc
               $file_perc_1=FileOpenDialog($title &"-Open file",@ScriptDir,"File di testo(*.txt)")
               If $file_perc_1 <> "" Then
                       GUICtrlSetData($file1,$file_perc_1)
               EndIf
       Case $save_perc
               While 1
                       $save_perc_1=FileSaveDialog($title &"-Save file",@ScriptDir,"File di testo(*.txt)")
                       If $save_perc_1="" Then ExitLoop
                       If Not StringInStr($save_perc_1,".txt") Then
                               $save_perc_1=$save_perc_1 & ".txt"
                       EndIf
                       If FileExists($save_perc_1) Then
                               $save_confirm=MsgBox(48+4,$title,"Il file è già esistente. Sostituirlo?")
                               If $save_confirm=6 Then
                                       ExitLoop
                               EndIf
                       Else
                               ExitLoop
                       EndIf
               WEnd
               If $save_perc_1 <> "" Then        GUICtrlSetData($save1,$save_perc_1)
       Case $tag_perc
               $tag_perc_1=FileOpenDialog($title &"-Tag list",@ScriptDir,"File di testo(*.txt)")
               If $tag_perc_1 <> "" Then GUICtrlSetData($tag_list,$tag_perc_1)
       Case $start
               $file=GUICtrlRead($file1)
               $save=GUICtrlRead($save1)
               $tag=GUICtrlRead($tag_list)
               $remove=_RemoveTag($file,$save,$tag,False,$title)
               If $remove=0 Then
                       MsgBox(16,$title,"Errore nella conversione.",5)
               Else
                       MsgBox(64,$title,"Conversione avvenuta con successo!",5)
                       ShellExecute($save)
               EndIf
       EndSwitch
WEnd

Func _RemoveTag($file_read,$file_save,$file_tag,$prog=False,$title="")
       ;controllo variabili
       If $prog= True Then
               $bar=ProgressOn($title,"Conversione in corso...","Lettura file...")
       EndIf
       ;file di lettura
       If $file_read="" Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       $read=FileOpen($file_read,0)
       If @error Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       $read_file_line=_FileCountLines($file_read)
       If @error Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       
       ;file di scrittura
       If $file_save="" Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       $write=FileOpen($file_save,2)
       If @error Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       If $prog=True Then ProgressSet(0,"Creazione file...")
       
       ;lista tag
       If $file_tag="" Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       $tag_read_char=FileOpen($file_tag,0)
       If @error Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       $tag_line_count=_FileCountLines($file_tag)
       If $tag_line_count=@error Then
               If $prog=True Then ProgressOff()
               Return 0
       EndIf
       If $prog=True Then ProgressSet(0,"Lettura tag...")
       If $tag_line_count <> 0 Then
               Dim $tag[$tag_line_count], $replace[$tag_line_count]
               $tag_line_current=0
               While 1
                       $read_tag=FileReadLine($tag_read_char)
                       If @error Then ExitLoop
                       If StringInStr($read_tag," ") Then
                               $split=StringSplit($read_tag," ")
                               $tag[$tag_line_current]=$split[1]
                               If UBound($split) > 2 Then
                                       $replace[$tag_line_current]=$split[2]
                               Else
                                       $replace[$tag_line_current]=""
                               EndIf
                       Else
                               $tag[$tag_line_current]=$read_tag
                       EndIf
                       $tag_line_current+=1
               WEnd
       ElseIf $tag_line_count=0 Then
               Dim $tag[1], $replace[1]
               $read_tag=FileReadLine($tag_read_char,1)
               If StringInStr($read_tag," ") Then
                       $split=StringSplit($read_tag," ")
                       $tag[0]=$split[1]
                       If UBound($split) > 2 Then
                               $replace[0]=$split[2]
                       Else
                               $replace[0]=""
                       EndIf
               Else
                       $tag[0]=$read_tag
               EndIf
       EndIf
       ;lettura file e rimozione tag
       $current_file_line=1
       If $prog=True Then ProgressSet(Round((100*$current_file_line)/$read_file_line,1),"Inizio procedura di conversione..."& @CRLF &"Riga "& $current_file_line &" di "& $read_file_line)
       While 1
               $readline=FileReadLine($read)
               If @error Then
                       FileClose($read)
                       FileClose($write)
                       FileClose($tag_read_char)
                       If $prog=True Then ProgressOff()
                       Return 1
               EndIf
               $i=0
               While 1
                       If StringInStr($readline,$tag[$i]) Then
                               $rep=StringReplace($readline,$tag[$i],$replace[$i])
                               $readline=$rep
                       Else
                               If $i <> UBound($tag)-1 Then
                                       $i+=1
                               Else
                                       ExitLoop
                               EndIf
                       EndIf
               WEnd
               FileWriteLine($write,$readline & @CRLF)
               If $prog=True Then ProgressSet(Round((100*$current_file_line)/$read_file_line,1),"Inizio procedura di conversione..."& @CRLF &"Riga "& $current_file_line &" di "& $read_file_line)
               $current_file_line+=1
       WEnd
EndFunc


Utilizzo: Per adesso il funzionamento di limita ai file txt, ma vedrò di ampliare ad altri formati se serve...Comunque, è necessario creare solo un file(in txt) con dentro i tag in colonna.
Ad esempio:
CODICE
<b>
<hr>
<parolaccia>
parola_a_caso


Ho messo anche la progress bar per renderlo un po' più "interattivo" ;D
Non so se ha bug...ma sembrava funzionare decentemente.
Vi allego anche l'eseguibile: download
p.s.: se volete allegatelo dentro la utility che state facendo(anche se non penso che centri qualcosa) :D
Ciao :)

edit: fixato un piccolo bug che dava errore in caso che nel file tag era presente solo una riga.

Edited by xdmisterx - 1/2/2010, 09:07
 
Top
SuperAntani
CAT_IMG Posted on 26/1/2010, 17:50     +1   -1




Guarda in tutta sincerità ti darei un giudizio se solo rimanesse aperto il programma, non ho guardato il source ma evidentemente c'è un problema.
Non faccio in tempo a selezionare i tre file che mi di chiude.
A presto.
 
Top
xdmisterx
CAT_IMG Posted on 26/1/2010, 20:40     +1   -1




Sinceramente non saprei il perchè :blink:
Lo hanno provato dei miei amici e funziona. L'ho riprovato sul pc di casa e funziona perfettamente sia il sorgente che il compilato, quindi non saprei dovè l'errore <_<
Ho ricontrollato il codice e non mi sembra di aver visto errori.
Vediamo cosa dicono gli altri...

p.s.: una domanda solo per curiosità, tu hai vista?
 
Top
SuperAntani
CAT_IMG Posted on 26/1/2010, 20:42     +1   -1




No ho xp service pack 3
 
Top
xdmisterx
CAT_IMG Posted on 26/1/2010, 20:46     +1   -1




Come me...bu allora non saprei....
guarda se ti da errori lo scite usando il check degli errori. Forse per via di qualche libreria(siccome uso la versione 3.4 che è appena uscita)
 
Top
SuperAntani
CAT_IMG Posted on 26/1/2010, 20:49     +1   -1




Guarda pure io uso l'ultima che però mi sembra sia la 3.3.4.0 (scusa se sono maledettamente pignolo!!!)
Non so.
 
Top
xdmisterx
CAT_IMG Posted on 26/1/2010, 20:52     +1   -1




si scusa, è la 3.3.4.0.
comunque hai provato a fare un debug con lo scite?
 
Top
SuperAntani
CAT_IMG Posted on 26/1/2010, 21:42     +1   -1




Sì, non mi da niente
 
Top
xdmisterx
CAT_IMG Posted on 27/1/2010, 10:01     +1   -1




Vabbè.
Se qualcun'altro lo ha provato, ditemi se vi va o no.
Il tutto mi sembra alquanto strano <_<
 
Top
Gianlu-thebest
CAT_IMG Posted on 1/2/2010, 08:07     +1   -1




Anchio ho xp e mi da un problema, guarda
SPOILER (click to view)
image
 
Top
xdmisterx
CAT_IMG Posted on 1/2/2010, 09:08     +1   -1




può essere che se ne il file contenente i tag era vuoto o conteneva una sola riga, allora dava errore.
ho aggiornato il sorgente. prova a vedere se funziona :)
 
Top
10 replies since 26/1/2010, 16:26   62 views
  Share