quinta-feira, 29 de agosto de 2002

Função para Compactar Código Fonte (em VB.NET)

Gente, quem nunca teve problemas para compactar códigos fonte, ou quem já precisou utilizar algum programinha e descobriu que esles são um lixo?


Public Function comprime(Str as string)
       'Remove Tabulacao
       Str = Str.Replace(Chr(9)," ")
      
       'Remove Line Feed
       Str = Str.Replace(Chr(13)&Chr(10)," ")
             
       'Remove Espaços em Branco Duplos
       Do While (Str.IndexOF("  ") <> -1)
              Str = Str.Replace("  "," ")
       loop
      
       'Tira os "> <" e coloca "><"
        Str = Str.Replace("""> <""","""><""")
       
       'Optimiza tag > </ para ></
       Str = Str.Replace("> </","></")
   
      'Optimiza tag "> < para "><
       Str = Str.Replace("""> <","""><")
      
       'Optimiza tag > <" para ><"
       Str = Str.Replace("> <""","><""")
      
       'Optimiza tag ">  para ">
       Str = Str.Replace("""> ",""">")
      
       'Optimiza tag  <" para <"
       Str = Str.Replace(" <""","<""")
      
       'Optimiza tag : # para :#
       Str = Str.Replace(": #",":#")
 
       return str
    End Function


Abaixo, uma página em .NET para você utilizar. É o sistema já pronto que calcula até a eficiência.


<%@ Page Language="VB" smartnavigation="true" Debug="false" Trace="false" %>
<%@ Import NameSpace="System" %>
<script runat="server">


    ' Insert page code here
    '
   
    Sub F_BTN_RESETA_Click(sender As Object, e As EventArgs)
       F_STR_COMP.text = ""
       F_STR_NORMAL.text = ""
       LABEL_STRING_ORIGINAL.text = "N/D"
       LABEL_STRING_FINAL.text = "N/D"
       LABEL_STRING_REDUCAO.text = "N/D"
    End Sub
   
    Sub F_BTN_COMPACTA_Click(sender As Object, e As EventArgs)
       F_STR_COMP.text = comprime(F_STR_NORMAL.text)
       Calcula_Tamanho_Eficiencia()
    End Sub
   
    Public Function comprime(Str as string)
       'Remove Tabulacao
       Str = Str.Replace(Chr(9)," ")
      
       'Remove Line Feed
       Str = Str.Replace(Chr(13)&Chr(10)," ")
             
       'Remove Espaços em Branco Duplos
       Do While (Str.IndexOF("  ") <> -1)
              Str = Str.Replace("  "," ")
       loop
      
       'Tira os "> <" e coloca "><"
        Str = Str.Replace("""> <""","""><""")
       
       'Optimiza tag > </ para ></
       Str = Str.Replace("> </","></")
   
      'Optimiza tag "> < para "><
       Str = Str.Replace("""> <","""><")
      
       'Optimiza tag > <" para ><"
       Str = Str.Replace("> <""","><""")
      
       'Optimiza tag ">  para ">
       Str = Str.Replace("""> ",""">")
      
       'Optimiza tag  <" para <"
       Str = Str.Replace(" <""","<""")
      
       'Optimiza tag : # para :#
       Str = Str.Replace(": #",":#")
 
       return str
    End Function
   
    Public Function Calcula_Tamanho_Eficiencia()
       Dim tamanho_original as Integer
       Dim tamanho_final as Integer
       Dim reducao as Integer
   
       tamanho_original = F_STR_NORMAL.text.Length
       tamanho_final = F_STR_COMP.text.length
       reducao = tamanho_original-tamanho_final
   
       LABEL_STRING_ORIGINAL.text = tamanho_original.ToString() + " bytes"
       LABEL_STRING_FINAL.text = tamanho_final.ToString() + " bytes"
       LABEL_STRING_REDUCAO.text = reducao.ToString() + " bytes -> " + Cstr(100-((tamanho_final/tamanho_original))*100) + "%"
    End Function


</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <p align="center">
            <font face="Verdana">Ligeirinho - Sistema de Compressão</font>
        </p>
        <p align="center">
            <table style="WIDTH: 539px; HEIGHT: 328px" align="center">
                <tbody>
                    <tr>
                        <td valign="top">
                            <p align="right">
                                <asp:Label id="Label1" runat="server" Font-Size="8pt" Font-Names="Verdana">String Original:</asp:Label>
                                &nbsp;
                            </p>
                        </td>
                        <td>
                            <asp:TextBox id="F_STR_NORMAL" runat="server" Font-Size="8pt" Font-Names="Verdana" Width="351px" Rows="7" TextMode="MultiLine"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                            <div align="center">
                                <asp:Button id="F_BTN_COMPACTA" onclick="F_BTN_COMPACTA_Click" runat="server" Text="Compactar"></asp:Button>
                                &nbsp;
                                <asp:Button id="F_BTN_RESETA" onclick="F_BTN_RESETA_Click" runat="server" Text="Apagar Dados"></asp:Button>
                            </div>
                        </td>
                    </tr>
                    <tr>
                        <td valign="top">
                            <div align="right">
                                <asp:Label id="Label2" runat="server" Font-Size="8pt" Font-Names="Verdana">String Compactada:</asp:Label>
                                &nbsp;
                            </div>
                        </td>
                        <td>
                            <asp:TextBox id="F_STR_COMP" runat="server" Font-Size="8pt" Font-Names="Verdana" Width="351px" Rows="7" TextMode="MultiLine"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        </td>
                        <td>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p align="right">
                                <asp:Label id="Label3" runat="server" Font-Size="8pt" Font-Names="Verdana">Tamanho da String Original:</asp:Label>
                                &nbsp;
                            </p>
                        </td>
                        <td>
                            <asp:Label id="LABEL_STRING_ORIGINAL" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p align="right">
                                <asp:Label id="Label4" runat="server" Font-Size="8pt" Font-Names="Verdana">Tamanho da String Final:</asp:Label>
                                &nbsp;
                            </p>
                        </td>
                        <td>
                            <asp:Label id="LABEL_STRING_FINAL" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <p align="right">
                                <asp:Label id="Label5" runat="server" Font-Size="8pt" Font-Names="Verdana">Redução:</asp:Label>
                                &nbsp;
                            </p>
                        </td>
                        <td>
                            <asp:Label id="LABEL_STRING_REDUCAO" runat="server" Font-Size="8pt" Font-Names="Verdana">N/D</asp:Label>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </form>
</body>
</html>


Qualquer dúvida, não esqueçam de mandar email ou icq.


Até a próxima



Esta matéria foi postada originalmente no ASP4Developers por Guilherme Bacellar Moralez (site), que na época era "Consultor e Desenvolvedor Web, especializado em ASP, ASP.NET e MySql.
Gosta de se definir como Professor Pardal, pois, cada pepino que lhe aparece... Tem que inventar umas soluções mirabolantes. Talvez vocês encontrem alguns de seus códigos neste site.". Hoje, vai saber...

0 comentários: