| xdmisterx |
| | 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: 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: downloadp.s.: se volete allegatelo dentro la utility che state facendo(anche se non penso che centri qualcosa) 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
| | |
| |
|