<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Idalgo Cantelli</title><link>http://blog.shareoffice.it/icantelli/</link><description>.NET programming</description><managingEditor>Idalgo Cantelli</managingEditor><dc:language>it-IT</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Idalgo Cantelli</dc:creator><title>Alcune novità in System.Drawing</title><link>http://blog.shareoffice.it/icantelli/archive/2005/05/24/176.aspx</link><pubDate>Tue, 24 May 2005 23:24:00 GMT</pubDate><guid>http://blog.shareoffice.it/icantelli/archive/2005/05/24/176.aspx</guid><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Ho installato – un po’ in ritardo – la Beta 2 di Visual Studio 2005 e ho iniziato a esplorare le novità del mio namespace preferito: System.Drawing.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Chi lo ha già utilizzato per ottenere effetti grafici con le versioni precedenti del Framework sa che uno dei problemi principali è ridurre il flickering dei controlli su cui si compiono operazioni di disegno. Il modo classico per risolvere il problema è utilizzare il metodo SetStyle nel costruttore del nostro controllo Owner-draw:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.SetStyle(&lt;SPAN style="COLOR: teal"&gt;ControlStyles&lt;/SPAN&gt;.UserPaint, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.SetStyle(&lt;SPAN style="COLOR: teal"&gt;ControlStyles&lt;/SPAN&gt;.AllPaintingInWmPaint, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.SetStyle(&lt;SPAN style="COLOR: teal"&gt;ControlStyles&lt;/SPAN&gt;.DoubleBuffer, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.SetStyle(&lt;SPAN style="COLOR: teal"&gt;ControlStyles&lt;/SPAN&gt;.ResizeRedraw, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;La versione 2.0 del framework ha introdotto un oggetto che permette di gestire in maniera pi&amp;#249; flessibile le aree del controllo su cui vogliamo eseguire operazioni di disegno complesse.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;&lt;SPAN lang=IT&gt;Si tratta della classe &lt;B style="mso-bidi-font-weight: normal"&gt;BufferedGraphics&lt;/B&gt;. La classe non dispone di un costruttore pubblico, ma &amp;#232; possibile averne un&amp;#8217;istanza chiamando il metodo &lt;B style="mso-bidi-font-weight: normal"&gt;Allocate&lt;/B&gt; della classe &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;BufferedGraphicsContext&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;Ogni Application Domain ha un suo BufferedGraphicsContext, a cui &amp;#232; possibile ottenere un riferimento tramite la propriet&amp;#224; statica &lt;B style="mso-bidi-font-weight: normal"&gt;BufferedGraphicsManager.Current&lt;/B&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: teal"&gt;BufferedGraphics&lt;/SPAN&gt; bg = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;BufferedGraphicsContext&lt;/SPAN&gt; appDomainGraphicsContext;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;SUMMARY&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Costruttore.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SUMMARY&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; Form1()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;     &lt;/SPAN&gt;InitializeComponent();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;     &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.SetStyle(&lt;SPAN style="COLOR: teal"&gt;ControlStyles&lt;/SPAN&gt;.ResizeRedraw, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;            &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 28.4pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;appDomainGraphicsContext = &lt;SPAN style="COLOR: teal"&gt;BufferedGraphicsManager&lt;/SPAN&gt;.Current;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 28.4pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;bg = appDomainGraphicsContext.Allocate(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.CreateGraphics(),&lt;SPAN style="mso-spacerun: yes"&gt;                      &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                    &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ClientRectangle);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;     &lt;/SPAN&gt;bg.Render();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;}&lt;SPAN style="COLOR: teal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Come si vede dall&amp;#8217;esempio, il metodo &lt;B style="mso-bidi-font-weight: normal"&gt;Allocate&lt;/B&gt; accetta come secondo parametro un oggetto Rectangle, il che significa che possiamo utilizzare il doppio buffer per una sottoarea specifica del nostro controllo (nell&amp;#8217;esempio utilizziamo in realt&amp;#224; tutta l&amp;#8217;area, con la propriet&amp;#224; ClientRectangle).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Una volta ottenuto l&amp;#8217;oggetto BufferedGraphics, &amp;#232; possibile delegare ad esso operazioni di disegno che altrimenti genererebbero sfarfall&amp;#236;o (tipicamente succede quando la form viene ridimensionata, ma sarebbe il caso di usarlo anche qualora volessimo realizzare un CAD o delle animazioni).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Nell&amp;#8217;esempio, si utilizza il metodo &lt;B style="mso-bidi-font-weight: normal"&gt;Paint&lt;/B&gt; per disegnare lo sfondo della Form sfumato e un&amp;#8217;ellisse all&amp;#8217;interno di essa. Se si ridimensiona il Form, l&amp;#8217;immagine non presenta nessuno sfarfall&amp;#236;o.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-no-proof: yes"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Form1_Paint(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: teal"&gt;PaintEventArgs&lt;/SPAN&gt; e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: teal"&gt;LinearGradientBrush&lt;/SPAN&gt; Linear = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;LinearGradientBrush&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ClientRectangle, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;        &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;ProfessionalColors&lt;/SPAN&gt;.ToolStripGradientBegin, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                        &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;ProfessionalColors&lt;/SPAN&gt;.ToolStripGradientEnd, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                        &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;LinearGradientMode&lt;/SPAN&gt;.Horizontal),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                       &lt;/SPAN&gt;Linear2 = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;LinearGradientBrush&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ClientRectangle, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                     &lt;/SPAN&gt;&lt;SPAN style="COLOR: teal"&gt;Color&lt;/SPAN&gt;.Blue, &lt;SPAN style="COLOR: teal"&gt;Color&lt;/SPAN&gt;.YellowGreen, &lt;SPAN style="COLOR: teal"&gt;LinearGradientMode&lt;/SPAN&gt;.Vertical))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;            &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;  {&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;    using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: teal"&gt;BufferedGraphics&lt;/SPAN&gt; bg = appDomainGraphicsContext.Allocate (e.Graphics,&lt;SPAN style="COLOR: blue"&gt; this&lt;/SPAN&gt;.ClientRectangle))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;     &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;        &lt;/SPAN&gt;bg.Graphics.FillRectangle(Linear, &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ClientRectangle);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;        &lt;/SPAN&gt;bg.Graphics.DrawEllipse(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: teal"&gt;Pen&lt;/SPAN&gt;(Linear2, 5), &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.ClientRectangle);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;        &lt;/SPAN&gt;bg.Render();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;     &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;  &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOGHELPER&gt;&lt;/SPAN&gt;&lt;/BLOGHELPER&gt;&lt;/SPAN&gt;&lt;/BLOGHELPER&gt;&lt;/BLOGHELPER&gt;?&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src ="http://blog.shareoffice.it/icantelli/aggbug/176.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Ho installato – un po’ in ritardo – la Beta 2 di Visual Studio 2005 e ho iniziato a esplorare le novità del mio namespace preferito: System.Drawing.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Chi lo ha già utilizzato per ottenere effetti grafici con le versioni precedenti del Framework sa che uno dei problemi principali è ridurre il flickering dei controlli su cui si compiono operazioni di disegno. Il modo classico per risolvere il problema è utilizzare il metodo SetStyle nel costruttore del nostro controllo Owner-draw:</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">    </SPAN><SPAN style="COLOR: blue">this</SPAN>.SetStyle(<SPAN style="COLOR: teal">ControlStyles</SPAN>.UserPaint, <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">    </SPAN><SPAN style="COLOR: blue">this</SPAN>.SetStyle(<SPAN style="COLOR: teal">ControlStyles</SPAN>.AllPaintingInWmPaint, <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">    </SPAN><SPAN style="COLOR: blue">this</SPAN>.SetStyle(<SPAN style="COLOR: teal">ControlStyles</SPAN>.DoubleBuffer, <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">    </SPAN><SPAN style="COLOR: blue">this</SPAN>.SetStyle(<SPAN style="COLOR: teal">ControlStyles</SPAN>.ResizeRedraw, <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>La versione 2.0 del framework ha introdotto un oggetto che permette di gestire in maniera pi&#249; flessibile le aree del controllo su cui vogliamo eseguire operazioni di disegno complesse.</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=2><FONT face=Verdana><SPAN lang=IT>Si tratta della classe <B style="mso-bidi-font-weight: normal">BufferedGraphics</B>. La classe non dispone di un costruttore pubblico, ma &#232; possibile averne un&#8217;istanza chiamando il metodo <B style="mso-bidi-font-weight: normal">Allocate</B> della classe </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes">BufferedGraphicsContext</SPAN></B><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes">.<o:p></o:p></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"><FONT size=2><FONT face=Verdana>Ogni Application Domain ha un suo BufferedGraphicsContext, a cui &#232; possibile ottenere un riferimento tramite la propriet&#224; statica <B style="mso-bidi-font-weight: normal">BufferedGraphicsManager.Current</B>:<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">private</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"> <SPAN style="COLOR: teal">BufferedGraphics</SPAN> bg = <SPAN style="COLOR: blue">null</SPAN>;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: teal">BufferedGraphicsContext</SPAN> appDomainGraphicsContext;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"><SUMMARY><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Costruttore.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"></SUMMARY><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="COLOR: blue">public</SPAN> Form1()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"> </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">     </SPAN>InitializeComponent();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">     </SPAN><SPAN style="COLOR: blue">this</SPAN>.SetStyle(<SPAN style="COLOR: teal">ControlStyles</SPAN>.ResizeRedraw, <SPAN style="COLOR: blue">true</SPAN>);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">            </SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 28.4pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">appDomainGraphicsContext = <SPAN style="COLOR: teal">BufferedGraphicsManager</SPAN>.Current;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 28.4pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">bg = appDomainGraphicsContext.Allocate(<SPAN style="COLOR: blue">this</SPAN>.CreateGraphics(),<SPAN style="mso-spacerun: yes">                      </SPAN><SPAN style="mso-spacerun: yes">                    </SPAN><SPAN style="COLOR: blue">this</SPAN>.ClientRectangle);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">     </SPAN>bg.Render();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">}<SPAN style="COLOR: teal"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"><FONT face=Verdana><FONT size=2>Come si vede dall&#8217;esempio, il metodo <B style="mso-bidi-font-weight: normal">Allocate</B> accetta come secondo parametro un oggetto Rectangle, il che significa che possiamo utilizzare il doppio buffer per una sottoarea specifica del nostro controllo (nell&#8217;esempio utilizziamo in realt&#224; tutta l&#8217;area, con la propriet&#224; ClientRectangle).<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"><FONT face=Verdana><FONT size=2>Una volta ottenuto l&#8217;oggetto BufferedGraphics, &#232; possibile delegare ad esso operazioni di disegno che altrimenti genererebbero sfarfall&#236;o (tipicamente succede quando la form viene ridimensionata, ma sarebbe il caso di usarlo anche qualora volessimo realizzare un CAD o delle animazioni).<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"><FONT face=Verdana><FONT size=2>Nell&#8217;esempio, si utilizza il metodo <B style="mso-bidi-font-weight: normal">Paint</B> per disegnare lo sfondo della Form sfumato e un&#8217;ellisse all&#8217;interno di essa. Se si ridimensiona il Form, l&#8217;immagine non presenta nessuno sfarfall&#236;o.<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="mso-fareast-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: teal; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-no-proof: yes"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="COLOR: blue">private</SPAN> <SPAN style="COLOR: blue">void</SPAN> Form1_Paint(<SPAN style="COLOR: blue">object</SPAN> sender, <SPAN style="COLOR: teal">PaintEventArgs</SPAN> e)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">   </SPAN><SPAN style="COLOR: blue">using</SPAN> (<SPAN style="COLOR: teal">LinearGradientBrush</SPAN> Linear = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">LinearGradientBrush</SPAN>(<SPAN style="COLOR: blue">this</SPAN>.ClientRectangle, <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">                </SPAN><SPAN style="mso-spacerun: yes">        </SPAN><SPAN style="COLOR: teal">ProfessionalColors</SPAN>.ToolStripGradientBegin, <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">                        </SPAN><SPAN style="COLOR: teal">ProfessionalColors</SPAN>.ToolStripGradientEnd, <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">                        </SPAN><SPAN style="COLOR: teal">LinearGradientMode</SPAN>.Horizontal),<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">                       </SPAN>Linear2 = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">LinearGradientBrush</SPAN>(<SPAN style="COLOR: blue">this</SPAN>.ClientRectangle, <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">  </SPAN><SPAN style="mso-spacerun: yes">                     </SPAN><SPAN style="COLOR: teal">Color</SPAN>.Blue, <SPAN style="COLOR: teal">Color</SPAN>.YellowGreen, <SPAN style="COLOR: teal">LinearGradientMode</SPAN>.Vertical))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">            </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"></SPAN>  {<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="COLOR: blue">    using</SPAN> (<SPAN style="COLOR: teal">BufferedGraphics</SPAN> bg = appDomainGraphicsContext.Allocate (e.Graphics,<SPAN style="COLOR: blue"> this</SPAN>.ClientRectangle))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">     </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">        </SPAN>bg.Graphics.FillRectangle(Linear, <SPAN style="COLOR: blue">this</SPAN>.ClientRectangle);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">        </SPAN>bg.Graphics.DrawEllipse(<SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: teal">Pen</SPAN>(Linear2, 5), <SPAN style="COLOR: blue">this</SPAN>.ClientRectangle);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">        </SPAN>bg.Render();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">     </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">  </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US; mso-no-proof: yes">}</SPAN></P></BLOGHELPER></SPAN></BLOGHELPER></SPAN></BLOGHELPER></BLOGHELPER>?></span>
</p><p></p><img src ="http://blog.shareoffice.it/icantelli/aggbug/176.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Idalgo Cantelli</dc:creator><title>Il bisturi in Microsoft.VisualBasic.dll</title><link>http://blog.shareoffice.it/icantelli/archive/2005/05/22/175.aspx</link><pubDate>Sun, 22 May 2005 22:15:00 GMT</pubDate><guid>http://blog.shareoffice.it/icantelli/archive/2005/05/22/175.aspx</guid><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;Reflector&lt;/strong&gt; è uno dei miei decompilatori preferiti. Permette di vedere il meccanismo interno delle classi della Framework Common&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Library e di capire nei dettagli tanti aspetti del .NET Framework. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Reflector è disponibile gratuitamente all’indirizzo &lt;/font&gt;&lt;font face="Verdana" size="2"&gt;&lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;http://www.aisto.com/roeder/dotnet/&lt;/a&gt; .&lt;/font&gt;&lt;font face="Verdana" size="2"&gt; Se lo scaricate usate di frequente il menu &lt;i style="mso-bidi-font-style: normal"&gt;Check for Updates&lt;/i&gt;, dal momento che escono versioni aggiornate quasi ogni settimana.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;E’ divertente decompilare i metodi dell’assembly &lt;b style="mso-bidi-font-weight: normal"&gt;Microsoft.VisualBasic.dll&lt;/b&gt;. Si scopre così che tante vecchie keyword del Visual Basic 6.0 che sono state “apparentemente” mantenute sono in realtà dei wrapper di metodi C#.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Tutti sappiamo che gli array nel .NET Framework hanno dimensione fissa. Ma allora come mai in VB.NET è presente l’istruzione &lt;b style="mso-bidi-font-weight: normal"&gt;ReDim Preserve&lt;/b&gt;? Era l’istruzione che in VB6 ridimensionava un array mantenendo intatto il suo contenuto.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span lang="IT" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-language: IT; mso-ansi-language: IT"&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;Decompilando l’assembly Microsoft.VisualBasic.dll con Reflector si può cercare nella classe &lt;b style="mso-bidi-font-weight: normal"&gt;Strings&lt;/b&gt; il metodo privato e statico &lt;b style="mso-bidi-font-weight: normal"&gt;RedimPreserve&lt;/b&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN lang=IT style="mso-ansi-language: IT"&gt;&lt;o:p&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;FONT color=#000000 size=2&gt;&lt;SPAN style="COLOR: #1000a0; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#0000ff&gt;private static&lt;/FONT&gt; Array RedimPreserve(Array SourceArray, int Length)&lt;BR&gt;{&lt;BR&gt;      Type type1 = SourceArray.GetType();&lt;BR&gt;      Array array2 = Array.CreateInstance(SourceArray.GetType().GetElementType(), Length);&lt;BR&gt;      &lt;STRONG&gt;Array.Copy&lt;/STRONG&gt;(SourceArray, array2, Length);&lt;BR&gt;      return array2;&lt;BR&gt;}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Come si vede, il ReDim Preserve non modifica le dimensioni dell&amp;#8217;array originale, ma lo copia in un nuovo array la cui lunghezza &amp;#232; passata come parametro a questo metodo privato. Perci&amp;#242;, se siamo seguaci di Visual Basic .NET ma non vogliamo travestire troppo il nostro codice da Visual Basic 6, consideriamo la possibilit&amp;#224; di usare direttamente &lt;B style="mso-bidi-font-weight: normal"&gt;Array.Copy&lt;/B&gt; al posto di &lt;B style="mso-bidi-font-weight: normal"&gt;ReDim Preserve&lt;/B&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Chi &amp;#232; passato da Visual Basic .NET a C# lamenta l&amp;#8217;assenza di alcune utili funzioni come IsDate. Ma... tutto quello che si pu&amp;#242; fare con VB.NET si pu&amp;#242; fare anche con C#. Nulla di pi&amp;#249; facile che decompilare il metodo &lt;B style="mso-bidi-font-weight: normal"&gt;IsDate()&lt;/B&gt; di VB.NET (nella classe &lt;STRONG&gt;Information&lt;/STRONG&gt;) ed ecco che sappiamo come tradurlo in C#. Il giro &amp;#232; un po&amp;#8217; tortuoso perch&amp;#233; il metodo ci rimanda alla classe sealed &lt;B style="mso-bidi-font-weight: normal"&gt;DateType&lt;/B&gt; del namespace Microsoft.VisualBasic.CompilerServices. Ed ecco che nel metodo FromString troviamo il cuore della funzione:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: #1000a0; FONT-FAMILY: 'Courier New'"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;P&gt;public&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; DateTime FromString(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; Value, CultureInfo culture)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt; &lt;FONT color=#0000ff&gt;DateTime&lt;/FONT&gt; time1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;FONT color=#000000&gt; {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;    time1 = &lt;STRONG&gt;DateTime.Parse&lt;/STRONG&gt;(StringType.ToHalfwidthNumbers(Value), culture, &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;    DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowWhiteSpaces);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt; }&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; (Exception)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt; {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;    &lt;FONT color=#0000ff&gt;throw&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;              Strings.Left(Value, 0x20), "Date"));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt; }&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#000000 size=2&gt; &lt;FONT color=#0000ff&gt;return&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt; time1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Quindi per verificare se un oggetto &amp;#232; una data, la funzione IsDate chiama il metodo statico DateTime.Parse, intercetta un&amp;#8217;eventuale eccezione e riscatena una &lt;B style="mso-bidi-font-weight: normal"&gt;InvalidCastException&lt;/B&gt; al chiamante. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;Perci&amp;#242;, se passiamo a &lt;B style="mso-bidi-font-weight: normal"&gt;IsDate&lt;/B&gt; un oggetto che non &amp;#232; una data valida, il metodo scatener&amp;#224; un&amp;#8217;eccezione per restituirci &lt;B style="mso-bidi-font-weight: normal"&gt;false&lt;/B&gt;. A questo punto dobbiamo decidere se possiamo accettare il costo di un&amp;#8217;eccezione (che come sappiamo non &amp;#232; piccolo) o se vogliamo usare metodi diversi da IsDate per validare le nostre date. Un&amp;#8217;alternativa potrebbero essere le Regular Expressions.&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt;&lt;FONT face=Verdana size=2&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;In un precedente post ho ceduto anch&amp;#8217;io alla tentazione e ho mostrato del codice C# che include il namespace Microsoft.VisualBasic: utilizzavo la funzione &lt;B style="mso-bidi-font-weight: normal"&gt;RGB&lt;/B&gt; per convertire un oggetto System.Drawing.Color a 32 bit in un oggetto Color di Excel, a 24 bit:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; Microsoft.VisualBasic;&lt;SPAN style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;using &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Utilities;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; MyColorRange(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; Rng, &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;Color&lt;/st1:City&gt; &lt;st1:State w:st="on"&gt;Col&lt;/st1:State&gt;&lt;/st1:place&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;  using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; (&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; switchCultureInfo())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;((Excel.Range)Rng).Interior.Color = Information.RGB(Col.R, Col.G, Col.B);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Ma non c&amp;#8217;&amp;#232; pi&amp;#249; bisogno di dire che anche in questo snippet possiamo facilmente sbarazzarci di VB:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;using &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;Utilities;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;private&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; MyColorRange(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; Rng, &lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;Color&lt;/st1:City&gt; &lt;st1:State w:st="on"&gt;Col&lt;/st1:State&gt;&lt;/st1:place&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;  using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt; (&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; switchCultureInfo())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;((Excel.Range)Rng).Interior.Color = (((Col.B * 0x10000) + (Col.G * 0x100)) + Col.R);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-ansi-language: EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Qualcuno potrebbe obiettare che tutto ci&amp;#242; &amp;#232; un&amp;#8217;inutile pignoleria. Ma personalmente preferisco evitare di avere un assembly in pi&amp;#249; caricato in memoria piuttosto che cedere alle abitudini radicate dopo anni di sviluppo con VB. In fondo se vogliamo fare emettere un piccolo beep, costa davvero poco sforzo, anzich&amp;#232; scrivere una cosa del tipo&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Microsoft.VisualBasic.Information.Beep();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Chiamare la funzione nativa della user32.dll:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;[DllImport("user32", CharSet=CharSet.Unicode)]&lt;BR&gt;&lt;FONT color=#0000ff&gt;internal static extern int&lt;/FONT&gt; MessageBeep(&lt;FONT color=#0000ff&gt;int&lt;/FONT&gt; uType);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;SPAN lang=IT&gt;&lt;o:p&gt;&lt;FONT face="Courier New" size=2&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;&lt;BR&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Inoltre, ricordiamo che l&amp;#8217;includere Microsoft.VisualBasic pu&amp;#242; portare a pericolose ambiguit&amp;#224; su alcuni metodi. Se non si ha l&amp;#8217;occhio ben addestrato &amp;#232; possibile ad esempio confondere il metodo statico &lt;B style="mso-bidi-font-weight: normal"&gt;Format&lt;/B&gt; della classe &lt;B style="mso-bidi-font-weight: normal"&gt;System.String &lt;/B&gt;con il metodo statico &lt;B style="mso-bidi-font-weight: normal"&gt;Format&lt;/B&gt; della classe &lt;B style="mso-bidi-font-weight: normal"&gt;Microsoft.VisualBasic.Strings&lt;/B&gt;, e purtroppo i due metodi non fanno la stessa cosa.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;E&amp;#8217; vero che la non collisione dei nomi &amp;#232; garantita solo a livello di namespace e non a livello di classe, ma se cerchiamo di non dare nemmeno uno spiraglio a possibili problemi, ne trarremo solo giovamento.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/bloghelper&gt;?&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;img src ="http://blog.shareoffice.it/icantelli/aggbug/175.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana"><font size="2"><strong>Reflector</strong> è uno dei miei decompilatori preferiti. Permette di vedere il meccanismo interno delle classi della Framework Common<span style="mso-spacerun: yes"> </span>Library e di capire nei dettagli tanti aspetti del .NET Framework. </font></font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Reflector è disponibile gratuitamente all’indirizzo </font><font face="Verdana" size="2"><a href="http://www.aisto.com/roeder/dotnet/">http://www.aisto.com/roeder/dotnet/</a> .</font><font face="Verdana" size="2"> Se lo scaricate usate di frequente il menu <i style="mso-bidi-font-style: normal">Check for Updates</i>, dal momento che escono versioni aggiornate quasi ogni settimana.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2"></font></span> </p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">E’ divertente decompilare i metodi dell’assembly <b style="mso-bidi-font-weight: normal">Microsoft.VisualBasic.dll</b>. Si scopre così che tante vecchie keyword del Visual Basic 6.0 che sono state “apparentemente” mantenute sono in realtà dei wrapper di metodi C#.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Tutti sappiamo che gli array nel .NET Framework hanno dimensione fissa. Ma allora come mai in VB.NET è presente l’istruzione <b style="mso-bidi-font-weight: normal">ReDim Preserve</b>? Era l’istruzione che in VB6 ridimensionava un array mantenendo intatto il suo contenuto.</font></span></p><pre><span lang="IT" style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-fareast-language: IT; mso-ansi-language: IT"><font face="Verdana"><font size="2">Decompilando l’assembly Microsoft.VisualBasic.dll con Reflector si può cercare nella classe <b style="mso-bidi-font-weight: normal">Strings</b> il metodo privato e statico <b style="mso-bidi-font-weight: normal">RedimPreserve</b><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></FONT></SPAN></PRE><PRE><SPAN lang=IT style="mso-ansi-language: IT"><o:p><FONT face=Verdana size=2> </FONT></o:p></SPAN><FONT color=#000000 size=2><SPAN style="COLOR: #1000a0; FONT-FAMILY: 'Courier New'"><FONT color=#0000ff>private static</FONT> Array RedimPreserve(Array SourceArray, int Length)<BR>{<BR>      Type type1 = SourceArray.GetType();<BR>      Array array2 = Array.CreateInstance(SourceArray.GetType().GetElementType(), Length);<BR>      <STRONG>Array.Copy</STRONG>(SourceArray, array2, Length);<BR>      return array2;<BR>}</SPAN></FONT></PRE>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Come si vede, il ReDim Preserve non modifica le dimensioni dell&#8217;array originale, ma lo copia in un nuovo array la cui lunghezza &#232; passata come parametro a questo metodo privato. Perci&#242;, se siamo seguaci di Visual Basic .NET ma non vogliamo travestire troppo il nostro codice da Visual Basic 6, consideriamo la possibilit&#224; di usare direttamente <B style="mso-bidi-font-weight: normal">Array.Copy</B> al posto di <B style="mso-bidi-font-weight: normal">ReDim Preserve</B>.</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p><FONT face=Verdana size=2> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Chi &#232; passato da Visual Basic .NET a C# lamenta l&#8217;assenza di alcune utili funzioni come IsDate. Ma... tutto quello che si pu&#242; fare con VB.NET si pu&#242; fare anche con C#. Nulla di pi&#249; facile che decompilare il metodo <B style="mso-bidi-font-weight: normal">IsDate()</B> di VB.NET (nella classe <STRONG>Information</STRONG>) ed ecco che sappiamo come tradurlo in C#. Il giro &#232; un po&#8217; tortuoso perch&#233; il metodo ci rimanda alla classe sealed <B style="mso-bidi-font-weight: normal">DateType</B> del namespace Microsoft.VisualBasic.CompilerServices. Ed ecco che nel metodo FromString troviamo il cuore della funzione:</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P><PRE><FONT size=2><SPAN style="COLOR: #1000a0; FONT-FAMILY: 'Courier New'"><FONT color=#0000ff size=2><P>public</FONT><FONT color=#000000 size=2> </FONT><FONT color=#0000ff size=2>static</FONT><FONT color=#000000 size=2> DateTime FromString(</FONT><FONT color=#0000ff size=2>string</FONT><FONT size=2><FONT color=#000000> Value, CultureInfo culture)</FONT></P><P><FONT color=#000000>{</FONT></P><P><FONT color=#000000> <FONT color=#0000ff>DateTime</FONT> time1;</FONT></P><P></FONT><FONT size=2><FONT color=#000000> </FONT><FONT color=#0000ff>try</FONT></P></FONT><FONT size=2><P><FONT color=#000000> {</FONT></P><P><FONT color=#000000>    time1 = <STRONG>DateTime.Parse</STRONG>(StringType.ToHalfwidthNumbers(Value), culture, </FONT></P><P><FONT color=#000000>    DateTimeStyles.NoCurrentDateDefault | DateTimeStyles.AllowWhiteSpaces);</FONT></P><P><FONT color=#000000> }</FONT></P><P></FONT><FONT color=#000000 size=2> <FONT color=#0000ff>catch</FONT></FONT><FONT size=2><FONT color=#000000> (Exception)</FONT></P><P><FONT color=#000000> {</FONT></P><P></FONT><FONT color=#000000><FONT size=2>    <FONT color=#0000ff>throw</FONT></FONT></FONT><FONT color=#0000ff><FONT size=2> </FONT><FONT size=2>new</FONT></FONT><FONT size=2><FONT color=#000000> InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", </FONT></P><P><FONT color=#000000>              Strings.Left(Value, 0x20), "Date"));</FONT></P><P><FONT color=#000000> }</FONT></P><P></FONT><FONT color=#000000 size=2> <FONT color=#0000ff>return</FONT></FONT><FONT size=2><FONT color=#000000> time1;</FONT></P><P><FONT color=#000000>}</FONT></P></FONT></SPAN></FONT><SPAN style="mso-ansi-language: EN-US"><o:p> </o:p></SPAN></PRE>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Quindi per verificare se un oggetto &#232; una data, la funzione IsDate chiama il metodo statico DateTime.Parse, intercetta un&#8217;eventuale eccezione e riscatena una <B style="mso-bidi-font-weight: normal">InvalidCastException</B> al chiamante. </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana><FONT size=2>Perci&#242;, se passiamo a <B style="mso-bidi-font-weight: normal">IsDate</B> un oggetto che non &#232; una data valida, il metodo scatener&#224; un&#8217;eccezione per restituirci <B style="mso-bidi-font-weight: normal">false</B>. A questo punto dobbiamo decidere se possiamo accettare il costo di un&#8217;eccezione (che come sappiamo non &#232; piccolo) o se vogliamo usare metodi diversi da IsDate per validare le nostre date. Un&#8217;alternativa potrebbero essere le Regular Expressions.<B style="mso-bidi-font-weight: normal"><o:p></o:p></B></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B style="mso-bidi-font-weight: normal"><SPAN lang=IT><o:p><FONT face=Verdana size=2> </FONT></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>In un precedente post ho ceduto anch&#8217;io alla tentazione e ho mostrato del codice C# che include il namespace Microsoft.VisualBasic: utilizzavo la funzione <B style="mso-bidi-font-weight: normal">RGB</B> per convertire un oggetto System.Drawing.Color a 32 bit in un oggetto Color di Excel, a 24 bit:</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> Microsoft.VisualBasic;<SPAN style="COLOR: blue"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">using </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">Utilities;</SPAN><SPAN style="mso-ansi-language: EN-US"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="mso-ansi-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">private</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> <SPAN style="COLOR: blue">void</SPAN> MyColorRange(<SPAN style="COLOR: blue">object</SPAN> Rng, <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:City w:st="on">Color</st1:City> <st1:State w:st="on">Col</st1:State></st1:place>)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">  using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> (<SPAN style="COLOR: blue">new</SPAN> switchCultureInfo())<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>((Excel.Range)Rng).Interior.Color = Information.RGB(Col.R, Col.G, Col.B);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Ma non c&#8217;&#232; pi&#249; bisogno di dire che anche in questo snippet possiamo facilmente sbarazzarci di VB:</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">using </SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">Utilities;</SPAN><SPAN style="mso-ansi-language: EN-US"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">private</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> <SPAN style="COLOR: blue">void</SPAN> MyColorRange(<SPAN style="COLOR: blue">object</SPAN> Rng, <st1:place w:st="on"><st1:City w:st="on">Color</st1:City> <st1:State w:st="on">Col</st1:State></st1:place>)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">  using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"> (<SPAN style="COLOR: blue">new</SPAN> switchCultureInfo())<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>((Excel.Range)Rng).Interior.Color = (((Col.B * 0x10000) + (Col.G * 0x100)) + Col.R);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="mso-ansi-language: EN-US"><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Qualcuno potrebbe obiettare che tutto ci&#242; &#232; un&#8217;inutile pignoleria. Ma personalmente preferisco evitare di avere un assembly in pi&#249; caricato in memoria piuttosto che cedere alle abitudini radicate dopo anni di sviluppo con VB. In fondo se vogliamo fare emettere un piccolo beep, costa davvero poco sforzo, anzich&#232; scrivere una cosa del tipo</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Microsoft.VisualBasic.Information.Beep();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><o:p> </o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Chiamare la funzione nativa della user32.dll:</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><SPAN lang=IT><o:p><FONT face="Courier New" size=2><FONT size=2><FONT size=2>[DllImport("user32", CharSet=CharSet.Unicode)]<BR><FONT color=#0000ff>internal static extern int</FONT> MessageBeep(<FONT color=#0000ff>int</FONT> uType);</FONT></FONT></FONT></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><SPAN lang=IT><o:p><FONT face="Courier New" size=2><FONT size=2><FONT size=2><BR> </P></FONT></FONT></FONT></o:p></SPAN></SPAN>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Inoltre, ricordiamo che l&#8217;includere Microsoft.VisualBasic pu&#242; portare a pericolose ambiguit&#224; su alcuni metodi. Se non si ha l&#8217;occhio ben addestrato &#232; possibile ad esempio confondere il metodo statico <B style="mso-bidi-font-weight: normal">Format</B> della classe <B style="mso-bidi-font-weight: normal">System.String </B>con il metodo statico <B style="mso-bidi-font-weight: normal">Format</B> della classe <B style="mso-bidi-font-weight: normal">Microsoft.VisualBasic.Strings</B>, e purtroppo i due metodi non fanno la stessa cosa.</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>E&#8217; vero che la non collisione dei nomi &#232; garantita solo a livello di namespace e non a livello di classe, ma se cerchiamo di non dare nemmeno uno spiraglio a possibili problemi, ne trarremo solo giovamento.</FONT></SPAN></P></bloghelper>?></font></font></span></pre><img src ="http://blog.shareoffice.it/icantelli/aggbug/175.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Idalgo Cantelli</dc:creator><title>Metti un tigre nel codice</title><link>http://blog.shareoffice.it/icantelli/archive/2005/05/22/174.aspx</link><pubDate>Sun, 22 May 2005 00:47:00 GMT</pubDate><guid>http://blog.shareoffice.it/icantelli/archive/2005/05/22/174.aspx</guid><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Il 1968 è stato l’anno della contestazione, ma per la storia dell’informatica è stato anche l’anno del leggendario articolo di Edsger Dijkstra “&lt;em&gt;Go To Statement Considered Harmful&lt;/em&gt;”. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Questo è uno degli innumerevoli episodi nella storia delle teorie sull’architettura del codice citati da &lt;strong&gt;Steve McConnell&lt;/strong&gt; nel suo libro &lt;strong&gt;Ingegneria del Codice –manuale pratico per la costruzione di software completo&lt;/strong&gt;, appena tradotto da Mondadori Informatica.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;E’ un libro scritto in uno stile molto amichevole e chiaro, che si incentra sulle metodologie di design ma soprattutto su quelle di scrittura e debugging del codice. Il grande pregio di questo testo è che attinge da tantissime fonti accademiche sulla progettazione del software, ma le espone in una maniera estremamente chiara. Sembra che McConnell riesca ad applicare al suo stile gli stessi principi di gestione della complessità che ritiene essere essenziali in un progetto software. Con grande naturalezza ci espone le migliori pratiche di design e una serie innumerevole di regole per scrivere codice robusto. E’ infatti uno dei pregi di questo libro quello di tradurre in esempi pratici e in regole applicabili nel lavoro di tutti i giorni le teorie dei guru della programmazione. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Gli esempi presentati sono in diversi linguaggi, da Visual Basic a Java a C#. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Così possiamo attingere a una quantità impressionante di suggerimenti che vanno dal disegno delle classi ai principi per minimizzare l’ambito di visibilità, dall’utilizzo degli array a quello dei puntatori, dalla gestione delle eccezioni all’uso della ricorsione, dai prefissi standardizzati alla misurazione delle prestazioni. In merito a quest’ultimo punto, vengono confrontati diversi tipi di approccio a elaborazioni particolarmente “pesanti” e vengono confrontati i tempi di esecuzione in diversi linguaggi. Si tratta di tabelle di confronto veramente utili. In molti casi McConnell sembra non prendere posizione – non solo rispetto ai linguaggi, ma anche rispetto a certe scelte metodologiche, e con grande rigore esamina i vantaggi e gli svantaggi di soluzioni alternative.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font face="Verdana" size="2"&gt;Vengono poi trattati argomenti importanti come il refactoring, il “pair programming”, lo unit test.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Non si tratta di banali tips, ma di indicazioni metodologiche che se applicate fanno la vera differenza tra dilettantismo e rigore in questo nostro strano mestiere. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT"&gt;&lt;font size="2"&gt;&lt;font face="Verdana"&gt;Un’altra caratteristica che rende gradevole la lettura di questo libro sono le numerose citazioni che decorano i vari paragrafi. Ecco la mia preferita: &lt;i style="mso-bidi-font-style: normal"&gt;Mentre lavoro a un problema non penso mai alla bellezza. Penso solo a come risolvere il problema. Ma quando ho finito, se la soluzione non è bella, so che è errata (R. Buckminster Fuller).&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/I&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/bloghelper&gt;?&gt;&lt;/i&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src ="http://blog.shareoffice.it/icantelli/aggbug/174.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Il 1968 è stato l’anno della contestazione, ma per la storia dell’informatica è stato anche l’anno del leggendario articolo di Edsger Dijkstra “<em>Go To Statement Considered Harmful</em>”. </font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Questo è uno degli innumerevoli episodi nella storia delle teorie sull’architettura del codice citati da <strong>Steve McConnell</strong> nel suo libro <strong>Ingegneria del Codice –manuale pratico per la costruzione di software completo</strong>, appena tradotto da Mondadori Informatica.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">E’ un libro scritto in uno stile molto amichevole e chiaro, che si incentra sulle metodologie di design ma soprattutto su quelle di scrittura e debugging del codice. Il grande pregio di questo testo è che attinge da tantissime fonti accademiche sulla progettazione del software, ma le espone in una maniera estremamente chiara. Sembra che McConnell riesca ad applicare al suo stile gli stessi principi di gestione della complessità che ritiene essere essenziali in un progetto software. Con grande naturalezza ci espone le migliori pratiche di design e una serie innumerevole di regole per scrivere codice robusto. E’ infatti uno dei pregi di questo libro quello di tradurre in esempi pratici e in regole applicabili nel lavoro di tutti i giorni le teorie dei guru della programmazione. </font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Gli esempi presentati sono in diversi linguaggi, da Visual Basic a Java a C#. </font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Così possiamo attingere a una quantità impressionante di suggerimenti che vanno dal disegno delle classi ai principi per minimizzare l’ambito di visibilità, dall’utilizzo degli array a quello dei puntatori, dalla gestione delle eccezioni all’uso della ricorsione, dai prefissi standardizzati alla misurazione delle prestazioni. In merito a quest’ultimo punto, vengono confrontati diversi tipi di approccio a elaborazioni particolarmente “pesanti” e vengono confrontati i tempi di esecuzione in diversi linguaggi. Si tratta di tabelle di confronto veramente utili. In molti casi McConnell sembra non prendere posizione – non solo rispetto ai linguaggi, ma anche rispetto a certe scelte metodologiche, e con grande rigore esamina i vantaggi e gli svantaggi di soluzioni alternative.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font face="Verdana" size="2">Vengono poi trattati argomenti importanti come il refactoring, il “pair programming”, lo unit test.</font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font size="2"><font face="Verdana">Non si tratta di banali tips, ma di indicazioni metodologiche che se applicate fanno la vera differenza tra dilettantismo e rigore in questo nostro strano mestiere. </font></font></span></p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT"><font size="2"><font face="Verdana">Un’altra caratteristica che rende gradevole la lettura di questo libro sono le numerose citazioni che decorano i vari paragrafi. Ecco la mia preferita: <i style="mso-bidi-font-style: normal">Mentre lavoro a un problema non penso mai alla bellezza. Penso solo a come risolvere il problema. Ma quando ho finito, se la soluzione non è bella, so che è errata (R. Buckminster Fuller).<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></I></FONT></FONT></SPAN></P></bloghelper>?></i></font></font></span></p><img src ="http://blog.shareoffice.it/icantelli/aggbug/174.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Idalgo Cantelli</dc:creator><title>Come creare un add-in che elenca gli oggetti di SQL Server 2000 in un documento Microsoft Word</title><link>http://blog.shareoffice.it/icantelli/archive/2005/05/18/173.aspx</link><pubDate>Wed, 18 May 2005 23:05:00 GMT</pubDate><guid>http://blog.shareoffice.it/icantelli/archive/2005/05/18/173.aspx</guid><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Lavorare con i database è una pratica quotidiana. Un lavoro che deve affiancare la progettazione e lo sviluppo di database è la stesura di documentazione dettagliata sui database che creiamo. Per far ciò gli strumenti più comuni sono ErWin e Visio. E’ tuttavia possibile creare in modo rapido uno strumento di documentazione per SQL Server 2000.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Occorre utilizzare la libreria &lt;STRONG&gt;SQLDMO.dll&lt;/STRONG&gt; (la si trova nella cartella Microsoft SQL Server\80\Tools\Binn\sqldmo.dll)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Si tratta di un oggetto COM che viene usato anche dall&amp;#8217;Enterprise Manager per popolare il suo albero con la struttura dei database e delle tabelle.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Questa libreria fornisce accesso a tutti gli oggetti di Sql Server, dai database ai linked servers, dalle stored procedures ai file delle transazioni, dagli utenti ai job. Avrete insomma capito che utilizzandola ci si pu&amp;#242; creare un proprio Enterprise Manager senza dover conoscere nei pi&amp;#249; sottili dettagli le tabelle di sistema di SQL 2000.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Tempo fa avevo scritto una classe in VB.NET che elencava le stored procedures di un database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Con pochissimo sforzo l&amp;#8217;ho incapsulata in un Add-in per Microsoft Word. Non mi sono spinto molto oltre ma il risultato &amp;#232; gradevole. I metodi scrivono sul documento Word i database presenti sul server locale, e per ciascun database stampano l&amp;#8217;elenco delle tabelle e delle stored Procedures.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Allego il codice della classe con i metodi che elencano gli oggetti. Ricordate che per usare la libreria SQLDMO.dll occorre avere SQL Server 2000 o MSDE installato sulla macchina di sviluppo. Poi occorre includere il riferimento al progetto .NET selezionando Add Reference -&gt; COM -&gt; &lt;STRONG&gt;Microsoft SQLDMO Object Library&lt;/STRONG&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Siccome uno strumento del genere permette di elencare anche oggetti di amministrazione come i job e gli alerts, nonch&amp;#233; di reperire informazioni sui file fisici e sui log delle transazioni, pu&amp;#242; essere appetibile anche per i Database Administrators oltre che per i progettisti. Il metodo &lt;/SPAN&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;getDatabaseFiles&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt; &amp;#232; un esempio di questo uso &amp;#8220;amministrativo&amp;#8221; della libreria.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Ecco come si presenta la classe:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;/SPAN&gt; &lt;/P&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#808080&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; System.Diagnostics;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; SQLDMO;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; Microsoft.Office.Interop.Word;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; ApplicationClass = SQLDMO.ApplicationClass;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Arial color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT face=Arial&gt;&lt;FONT size=1&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; WordAddin&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=1&gt;{&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT size=1&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&lt;FONT color=#000000&gt;        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SQLDocumenter&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;         #region Member variables&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SQLDMO.SQLServer server;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SQLDMO.Database db; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; serverName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; databaseName;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; username;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;           &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;internal&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; password;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;         &lt;/SPAN&gt;#endregion&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=1&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=1&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Costruttore&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SQLDocumenter()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;               &lt;/SPAN&gt;server = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SQLDMO.SQLServer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Connect()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;               &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;               &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 5"&gt;                  &lt;/SPAN&gt;server.Connect(serverName, username, password);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;               &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;               &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (Exception ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;               &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 5"&gt;                  &lt;/SPAN&gt;Trace.Fail(ex.Message);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;               }&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Elenca i Server registrati su un PC.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; getServers(Microsoft.Office.Interop.Word.Range rng)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                     &lt;/SPAN&gt;ApplicationClass APP = &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; ApplicationClass();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;                     &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (ServerGroup Sg &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; APP.ServerGroups)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 5"&gt;&lt;FONT color=#000000&gt;                         &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (RegisteredServer srv &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; Sg.RegisteredServers)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 6"&gt;                                &lt;/SPAN&gt;rng.InsertAfter(srv.Name + Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (Exception ex)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                     &lt;/SPAN&gt;Trace.Fail(ex.Message);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                  }&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Elenca i database di un server &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt;            &lt;FONT color=#808080&gt;///&lt;/FONT&gt; e scrive la lista su un oggetto Range di Microsoft Word.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; getDatabases(Microsoft.Office.Interop.Word.Range rng)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;rng.InsertAfter(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format("Database del server {0}{1}{1}", &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 127.8pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;server.Name, Environment.NewLine));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.Database db &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; server.Databases)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;rng.InsertAfter(db.Name.ToUpper() + Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;rng.InsertAfter("Database files: " + Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 6"&gt;                                    &lt;/SPAN&gt;getDatabaseFiles(db, rng);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;rng.InsertAfter("TABELLE: "+ Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 6"&gt;                                    &lt;/SPAN&gt;myGetTables(db, rng);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;rng.InsertAfter("STORED PROCEDURES:" + Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 6"&gt;                                    &lt;/SPAN&gt;myGetStoredProcedures(db, rng);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;rng.InsertAfter("------------------------" +&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                                        Environment.NewLine);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: gray"&gt;            ///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Enumera i nomi di file fisici del database (con il percorso completo), &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt;            &lt;FONT color=#808080&gt;///&lt;/FONT&gt; le loro dimensioni in Megabyte&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;&lt;SPAN style="mso-tab-count: 1"&gt; &lt;/SPAN&gt;e le dimensioni massime del file. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt;            &lt;FONT color=#808080&gt;///&lt;/FONT&gt; -1 significa che il file non ha una dimensione massima.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; getDatabaseFiles(SQLDMO.Database db, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                                          Microsoft.Office.Interop.Word.Range rng)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.FileGroup fg &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; db.FileGroups)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.DBFile dbf &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; fg.DBFiles)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 6"&gt;                       &lt;/SPAN&gt;rng.InsertAfter(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format("&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place w:st="on"&gt;&lt;st1:City w:st="on"&gt;Nome&lt;/st1:City&gt;&lt;/st1:place&gt; file: {0}; " +&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 184.6pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;"Size {1}MB; MaximumSize : {2}{3}" , &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                                  dbf.PhysicalName, dbf.Size, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 184.6pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt; dbf.MaximumSize, Environment.NewLine));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                }&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Elenca le tabelle di un database &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt;            &lt;FONT color=#808080&gt;///&lt;/FONT&gt; e scrive la lista su un oggetto Range di Word.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Vengono escluse le tabelle di sistema.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; myGetTables(SQLDMO.Database db, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                              Microsoft.Office.Interop.Word.Range rng)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.Table tb &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; db.Tables)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;                        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (!tb.SystemObject)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 5"&gt;                              &lt;/SPAN&gt;rng.InsertAfter(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format("\t{0}{1}", &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                              tb.Name, Environment.NewLine));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=1&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; GetStoredProcedures(Microsoft.Office.Interop.Word.Range rng, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 15"&gt;                 &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; databaseName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.Database db &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; server.Databases)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;                        &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Compare(db.Name, databaseName, &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;&lt;FONT color=#000000&gt;) == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 4"&gt;                        &lt;/SPAN&gt;{&lt;SPAN style="mso-tab-count: 4"&gt;                       &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 5"&gt;                              &lt;/SPAN&gt;rng.InsertAfter(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format("Stored procedures " +&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                                                            "&lt;st1:place w:st="on"&gt;&lt;st1:State w:st="on"&gt;del&lt;/st1:State&gt;&lt;/st1:place&gt; database {0}{1}{1}", &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;                                                            &lt;/SPAN&gt;databaseName, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                                                            Environment.NewLine));&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;                              myGetStoredProcedures(db,rng);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT color=#000000&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;                        &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 3"&gt;                  &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=1&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;FONT size=1&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;SUMMARY&gt;&lt;o:p&gt;&lt;FONT color=#008000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Elenca le stored procedures di un database, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 14.2pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;       ///&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; e le scrive su un oggetto Range di Word.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Sono escluse le stored procedures di sistema&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;&lt;FONT color=#000000&gt;            &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; myGetStoredProcedures(SQLDMO.Database db, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 15"&gt;                                           &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;    &lt;/SPAN&gt;Microsoft.Office.Interop.Word.Range rng)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 4"&gt;&lt;FONT color=#000000&gt;               &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (SQLDMO.StoredProcedure sp &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; db.StoredProcedures)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 6"&gt;&lt;FONT color=#000000&gt;                  &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (!sp.SystemObject)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 7"&gt;                    &lt;/SPAN&gt;rng.InsertAfter(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Format("\t{0}{1}", &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;                                    &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;sp.Name, Environment.NewLine));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 2"&gt;            &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/bloghelper&gt;?&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src ="http://blog.shareoffice.it/icantelli/aggbug/173.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Lavorare con i database è una pratica quotidiana. Un lavoro che deve affiancare la progettazione e lo sviluppo di database è la stesura di documentazione dettagliata sui database che creiamo. Per far ciò gli strumenti più comuni sono ErWin e Visio. E’ tuttavia possibile creare in modo rapido uno strumento di documentazione per SQL Server 2000.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Occorre utilizzare la libreria <STRONG>SQLDMO.dll</STRONG> (la si trova nella cartella Microsoft SQL Server\80\Tools\Binn\sqldmo.dll)</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Si tratta di un oggetto COM che viene usato anche dall&#8217;Enterprise Manager per popolare il suo albero con la struttura dei database e delle tabelle.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Questa libreria fornisce accesso a tutti gli oggetti di Sql Server, dai database ai linked servers, dalle stored procedures ai file delle transazioni, dagli utenti ai job. Avrete insomma capito che utilizzandola ci si pu&#242; creare un proprio Enterprise Manager senza dover conoscere nei pi&#249; sottili dettagli le tabelle di sistema di SQL 2000.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Tempo fa avevo scritto una classe in VB.NET che elencava le stored procedures di un database.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Con pochissimo sforzo l&#8217;ho incapsulata in un Add-in per Microsoft Word. Non mi sono spinto molto oltre ma il risultato &#232; gradevole. I metodi scrivono sul documento Word i database presenti sul server locale, e per ciascun database stampano l&#8217;elenco delle tabelle e delle stored Procedures.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Allego il codice della classe con i metodi che elencano gli oggetti. Ricordate che per usare la libreria SQLDMO.dll occorre avere SQL Server 2000 o MSDE installato sulla macchina di sviluppo. Poi occorre includere il riferimento al progetto .NET selezionando Add Reference -> COM -> <STRONG>Microsoft SQLDMO Object Library</STRONG>.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">Siccome uno strumento del genere permette di elencare anche oggetti di amministrazione come i job e gli alerts, nonch&#233; di reperire informazioni sui file fisici e sui log delle transazioni, pu&#242; essere appetibile anche per i Database Administrators oltre che per i progettisti. Il metodo </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">getDatabaseFiles</SPAN></B><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"> &#232; un esempio di questo uso &#8220;amministrativo&#8221; della libreria.</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Ecco come si presenta la classe:</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"></SPAN> </P><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#808080><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> System;<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> System.Diagnostics;<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> SQLDMO;<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> Microsoft.Office.Interop.Word;<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">using</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> ApplicationClass = SQLDMO.ApplicationClass;<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT face=Arial color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT face=Arial><FONT size=1><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">namespace</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> WordAddin<o:p></o:p></FONT></SPAN></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><FONT size=1>{</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT size=1><SPAN style="mso-tab-count: 1"><FONT color=#000000>        </FONT></SPAN></FONT><FONT size=2><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">class</SPAN><FONT color=#000000> SQLDocumenter<o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 1">      </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2">         #region Member variables</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> SQLDMO.SQLServer server;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> SQLDMO.Database db; <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000> serverName;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000> databaseName;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000> username;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>           </FONT></SPAN><SPAN style="COLOR: blue">internal</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000> password;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2">         </SPAN>#endregion<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><FONT size=1><SPAN style="mso-tab-count: 2">            </SPAN></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><FONT size=1><SPAN style="mso-tab-count: 2"></SPAN></FONT></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Costruttore</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> SQLDocumenter()<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">               </SPAN>server = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> SQLDMO.SQLServer();<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> Connect()<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>               </FONT></SPAN><SPAN style="COLOR: blue">try<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">               </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 5">                  </SPAN>server.Connect(serverName, username, password);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">               </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>               </FONT></SPAN><SPAN style="COLOR: blue">catch</SPAN><FONT color=#000000> (Exception ex)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">               </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 5">                  </SPAN>Trace.Fail(ex.Message);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4">               }</SPAN></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><o:p></o:p></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Elenca i Server registrati su un PC.</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> getServers(Microsoft.Office.Interop.Word.Range rng)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">try<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                     </SPAN>ApplicationClass APP = </FONT><SPAN style="COLOR: blue">new</SPAN><FONT color=#000000> ApplicationClass();<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>                     </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (ServerGroup Sg </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> APP.ServerGroups)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 5"><FONT color=#000000>                         </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (RegisteredServer srv </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> Sg.RegisteredServers)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 6">                                </SPAN>rng.InsertAfter(srv.Name + Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">catch</SPAN><FONT color=#000000> (Exception ex)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                     </SPAN>Trace.Fail(ex.Message);</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                  }</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Elenca i database di un server </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: green">            <FONT color=#808080>///</FONT> e scrive la lista su un oggetto Range di Microsoft Word.</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> getDatabases(Microsoft.Office.Interop.Word.Range rng)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>rng.InsertAfter(</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Format("Database del server {0}{1}{1}", <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 127.8pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>server.Name, Environment.NewLine));<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.Database db </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> server.Databases)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>rng.InsertAfter(db.Name.ToUpper() + Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>rng.InsertAfter("Database files: " + Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 6">                                    </SPAN>getDatabaseFiles(db, rng);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>rng.InsertAfter("TABELLE: "+ Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 6">                                    </SPAN>myGetTables(db, rng);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>rng.InsertAfter("STORED PROCEDURES:" + Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 6">                                    </SPAN>myGetStoredProcedures(db, rng);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>rng.InsertAfter("------------------------" +</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                                        Environment.NewLine);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3">                  </SPAN></SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">}<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: gray">            ///</SPAN><SPAN style="COLOR: green"> Enumera i nomi di file fisici del database (con il percorso completo), </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: green">            <FONT color=#808080>///</FONT> le loro dimensioni in Megabyte<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"><SPAN style="mso-tab-count: 1"> </SPAN>e le dimensioni massime del file. </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: green">            <FONT color=#808080>///</FONT> -1 significa che il file non ha una dimensione massima.</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> getDatabaseFiles(SQLDMO.Database db, </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                                          Microsoft.Office.Interop.Word.Range rng)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                </SPAN></FONT><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.FileGroup fg </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> db.FileGroups)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN><SPAN style="mso-spacerun: yes"> </SPAN></FONT><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.DBFile dbf </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> fg.DBFiles)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 6">                       </SPAN>rng.InsertAfter(</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Format("<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:City w:st="on">Nome</st1:City></st1:place> file: {0}; " +<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 184.6pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>"Size {1}MB; MaximumSize : {2}{3}" , <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                                  dbf.PhysicalName, dbf.Size, <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 184.6pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000> dbf.MaximumSize, Environment.NewLine));<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3">                }</SPAN></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Elenca le tabelle di un database </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: green">            <FONT color=#808080>///</FONT> e scrive la lista su un oggetto Range di Word.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Vengono escluse le tabelle di sistema.</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> myGetTables(SQLDMO.Database db, </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                              Microsoft.Office.Interop.Word.Range rng)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.Table tb </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> db.Tables)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>                        </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (!tb.SystemObject)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 5">                              </SPAN>rng.InsertAfter(</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Format("\t{0}{1}", </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                              tb.Name, Environment.NewLine));<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000 size=1></FONT></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p></o:p></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">public</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> GetStoredProcedures(Microsoft.Office.Interop.Word.Range rng, <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 15">                 </SPAN><SPAN style="mso-tab-count: 4">                        </SPAN></FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000> databaseName)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><o:p><FONT color=#000000> </FONT></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 3"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.Database db </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> server.Databases)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>                        </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Compare(db.Name, databaseName, </FONT><SPAN style="COLOR: blue">true</SPAN><FONT color=#000000>) == 0)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 4">                        </SPAN>{<SPAN style="mso-tab-count: 4">                       </SPAN><o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 5">                              </SPAN>rng.InsertAfter(</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Format("Stored procedures " +</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                                                            "<st1:place w:st="on"><st1:State w:st="on">del</st1:State></st1:place> database {0}{1}{1}", <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-spacerun: yes">                                                            </SPAN>databaseName, </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                                                            Environment.NewLine));</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>                              myGetStoredProcedures(db,rng);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT color=#000000><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p>                        </o:p></SPAN></FONT><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 3">                  </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><o:p></o:p></FONT></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT color=#000000><FONT size=1><SPAN style="mso-tab-count: 2">            </SPAN><o:p></o:p></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><FONT size=1><SPAN style="COLOR: gray"><SUMMARY><o:p><FONT color=#008000></FONT></o:p></SPAN></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Elenca le stored procedures di un database, <o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 14.2pt; TEXT-INDENT: 14.2pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">       ///</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> e le scrive su un oggetto Range di Word.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Sono escluse le stored procedures di sistema</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 2"><FONT color=#000000>            </FONT></SPAN><SPAN style="COLOR: blue">private</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: blue">void</SPAN><FONT color=#000000> myGetStoredProcedures(SQLDMO.Database db, <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 15">                                           </SPAN><SPAN style="mso-tab-count: 1">    </SPAN>Microsoft.Office.Interop.Word.Range rng)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>{<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 4"><FONT color=#000000>               </FONT></SPAN><SPAN style="COLOR: blue">foreach</SPAN><FONT color=#000000> (SQLDMO.StoredProcedure sp </FONT><SPAN style="COLOR: blue">in</SPAN><FONT color=#000000> db.StoredProcedures)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><SPAN style="mso-tab-count: 6"><FONT color=#000000>                  </FONT></SPAN><SPAN style="COLOR: blue">if</SPAN><FONT color=#000000> (!sp.SystemObject)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 7">                    </SPAN>rng.InsertAfter(</FONT><SPAN style="COLOR: blue">string</SPAN><FONT color=#000000>.Format("\t{0}{1}", </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><FONT color=#000000><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">                                    </SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US">sp.Name, Environment.NewLine));<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 2">            </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000><SPAN style="mso-tab-count: 1">      </SPAN>}<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US; mso-ansi-language: EN-US"><FONT color=#000000>}</FONT></SPAN></SPAN></FONT></SPAN></P></bloghelper>?></span></p><img src ="http://blog.shareoffice.it/icantelli/aggbug/173.aspx" width = "1" height = "1" /></body></item><item><dc:creator>Idalgo Cantelli</dc:creator><title>Come aggirare l’errore 'Old Format or Invalid Type Library'</title><link>http://blog.shareoffice.it/icantelli/archive/2005/05/16/172.aspx</link><pubDate>Mon, 16 May 2005 11:28:00 GMT</pubDate><guid>http://blog.shareoffice.it/icantelli/archive/2005/05/16/172.aspx</guid><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Quando si manipolano gli oggetti di Excel in un assembly .NET capita a volte che venga scatenata un’eccezione di tipo &lt;b&gt;COMException&lt;/b&gt; il cui messaggio è 'Old Format or Invalid Type Library'. Succede se si utilizza una versione di Excel in lingua inglese ma le impostazioni del proprio PC sono in una lingua diversa.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Un articolo della Knowledge Base (&lt;A href="http://support.microsoft.com/default.aspx?scid=kb;en-us;320369"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;320369&lt;/A&gt; ) suggerisce un workaround a questo problema.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Occorre impostare la &lt;B&gt;CurrentCulture &lt;/B&gt;a &amp;#8220;en-US&amp;#8221; prima dell&amp;#8217;operazione critica, poi &amp;#232; possibile ripristinare la CultureInfo precedente (che avremo memorizzato in una variabile d&amp;#8217;appoggio).&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Sono in tutto tre righe di codice, ma come al solito &amp;#232; utile delegare questa piccola operazione a una classe riutilizzabile.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;L&amp;#8217;istruzione using e l&amp;#8217;interfaccia &lt;STRONG&gt;IDisposable&lt;/STRONG&gt; che ho descritto in un precedente post possono tornare utili anche in questo caso.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Ecco come si pu&amp;#242; implementare questa classe in C#:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; System.Globalization;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; System.Threading;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; System.Diagnostics;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;namespace&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; Utilities&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;summary&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; switchCultureInfo. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Implementa &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;see cref="IDisposable"/&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; e bufferizza in una variabile membro la &lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;see cref="CultureInfo"/&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; corrente.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Sul costruttore imposta la &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;FONT color=#008000&gt;CurrentCulture&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt; su "en-US".&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/summary&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;remarks&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; Da usarsi per uno switch temporaneo alla CultureInfo di tipo "en-US"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; nei casi in cui l'utilizzo di alcuni oggetti di Office produce l'eccezione&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; 'Old Format or Invalid Type Library' &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;      &lt;FONT color=#808080&gt;///&lt;/FONT&gt; di tipo &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;see cref="System.Runtime.InteropServices.COMException"/&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; documentata nell'articolo 320369 della Knowledge Base.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;/remarks&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;[DebuggerStepThrough()]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; switchCultureInfo: IDisposable&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;private&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; CultureInfo originalCultureInfo = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&lt;SPAN style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;summary&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; Costruttore. Memorizza nella variabile membro &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;see ref="originalCultureInfo"/&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;///&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt; la CultureInfo corrente, &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="COLOR: green"&gt;      &lt;FONT color=#808080&gt;///&lt;/FONT&gt; per poterla ripristinare nel metodo &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;see cref="Dispose"/&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;///&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;/summary&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; switchCultureInfo()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;originalCultureInfo = Thread.CurrentThread.CurrentCulture;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;Thread.CurrentThread.CurrentCulture = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; CultureInfo("en-US");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Dispose()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;Thread.CurrentThread.CurrentCulture = originalCultureInfo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 2"&gt;     &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;   }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Ed ecco come si pu&amp;#242; usarla per proteggere un&amp;#8217;operazione che altrimenti genererebbe la COMException:&lt;/SPAN&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; Microsoft.VisualBasic;&lt;SPAN style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;using &lt;FONT color=#000000&gt;Utilities&lt;/FONT&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;/SPAN&gt; &lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;private&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; MyColorRange(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; Rng, Color Col)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;  using&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; (&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; switchCultureInfo())&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;      &lt;/SPAN&gt;((Excel.Range)Rng).Interior.Color = Information.RGB(Col.R, Col.G, Col.B);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"&gt;&lt;SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"&gt;Nell&amp;#8217;esempio si imposta il colore di una cella di Excel a partire da un oggetto System.Drawing.Color del Framework. Da notare che per convertire la structure System.Drawing.Color (che &amp;#232; a 24 bit) nell&amp;#8217;oggetto Color di Excel il modo migliore &amp;#232; usare il metodo &lt;B&gt;RGB&lt;/B&gt; della classe &lt;B&gt;Microsoft.VisualBasic.Information&lt;/B&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoBodyText style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=IT&gt;&lt;FONT face=Verdana size=2&gt;Questo &amp;#232; uno dei rarissimi casi in cui pu&amp;#242; essere consigliabile includere il namespace Microsoft.VisualBasic in un progetto C#!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=IT style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/bloghelper&gt;?&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src ="http://blog.shareoffice.it/icantelli/aggbug/172.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><span lang="IT" style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Quando si manipolano gli oggetti di Excel in un assembly .NET capita a volte che venga scatenata un’eccezione di tipo <b>COMException</b> il cui messaggio è 'Old Format or Invalid Type Library'. Succede se si utilizza una versione di Excel in lingua inglese ma le impostazioni del proprio PC sono in una lingua diversa.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Un articolo della Knowledge Base (<A href="http://support.microsoft.com/default.aspx?scid=kb;en-us;320369">http://support.microsoft.com/default.aspx?scid=kb;en-us;320369</A> ) suggerisce un workaround a questo problema.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Occorre impostare la <B>CurrentCulture </B>a &#8220;en-US&#8221; prima dell&#8217;operazione critica, poi &#232; possibile ripristinare la CultureInfo precedente (che avremo memorizzato in una variabile d&#8217;appoggio).<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Sono in tutto tre righe di codice, ma come al solito &#232; utile delegare questa piccola operazione a una classe riutilizzabile.<o:p></o:p></SPAN></P>
<P class=MsoBodyText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>L&#8217;istruzione using e l&#8217;interfaccia <STRONG>IDisposable</STRONG> che ho descritto in un precedente post possono tornare utili anche in questo caso.</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Ecco come si pu&#242; implementare questa classe in C#:<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> System;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> System.Globalization;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> System.Threading;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> System.Diagnostics;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">namespace</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> Utilities<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"><summary><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> switchCultureInfo. <o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Implementa </SPAN><SPAN style="COLOR: gray"><see cref="IDisposable"/><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">///</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> e bufferizza in una variabile membro la </SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><see cref="CultureInfo"/><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">///</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> corrente.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Sul costruttore imposta la </SPAN><SPAN style="COLOR: gray"><FONT color=#008000>CurrentCulture</FONT></SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="COLOR: green"> su "en-US".<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"></summary><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"><remarks><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">///</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> Da usarsi per uno switch temporaneo alla CultureInfo di tipo "en-US"<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> nei casi in cui l'utilizzo di alcuni oggetti di Office produce l'eccezione<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">///</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> 'Old Format or Invalid Type Library' </SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">      <FONT color=#808080>///</FONT> di tipo </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><see cref="System.Runtime.InteropServices.COMException"/></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">, <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">///</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> documentata nell'articolo 320369 della Knowledge Base.<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">///</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"></remarks><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>[DebuggerStepThrough()]<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">class</SPAN> switchCultureInfo: IDisposable<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">private</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> CultureInfo originalCultureInfo = <SPAN style="COLOR: blue">null</SPAN>;<SPAN style="COLOR: blue"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> </SPAN><SPAN style="COLOR: gray"><summary><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> Costruttore. Memorizza nella variabile membro </SPAN><SPAN style="COLOR: gray"><see ref="originalCultureInfo"/><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: gray">///</SPAN><SPAN style="COLOR: green"> la CultureInfo corrente, </SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="COLOR: green">      <FONT color=#808080>///</FONT> per poterla ripristinare nel metodo </SPAN><SPAN style="COLOR: gray"><see cref="Dispose"/></SPAN><SPAN style="COLOR: green">.<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">///</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"></summary><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: blue">public</SPAN> switchCultureInfo()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="mso-tab-count: 1">      </SPAN>originalCultureInfo = Thread.CurrentThread.CurrentCulture;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="mso-tab-count: 1">      </SPAN>Thread.CurrentThread.CurrentCulture = <SPAN style="COLOR: blue">new</SPAN> CultureInfo("en-US");<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="COLOR: blue">public</SPAN> <SPAN style="COLOR: blue">void</SPAN> Dispose()<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN><SPAN style="mso-tab-count: 1">      </SPAN>Thread.CurrentThread.CurrentCulture = originalCultureInfo;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>}</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 2">     </SPAN><SPAN style="COLOR: blue"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">   }<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Ed ecco come si pu&#242; usarla per proteggere un&#8217;operazione che altrimenti genererebbe la COMException:</SPAN><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> Microsoft.VisualBasic;<SPAN style="COLOR: blue"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">using <FONT color=#000000>Utilities</FONT><FONT color=#000000>;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"></SPAN> </P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">private</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <SPAN style="COLOR: blue">void</SPAN> MyColorRange(<SPAN style="COLOR: blue">object</SPAN> Rng, Color Col)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">  using</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> (<SPAN style="COLOR: blue">new</SPAN> switchCultureInfo())<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><SPAN style="mso-tab-count: 1">      </SPAN>((Excel.Range)Rng).Interior.Color = Information.RGB(Col.R, Col.G, Col.B);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none"><SPAN lang=IT style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'; mso-fareast-language: EN-US">Nell&#8217;esempio si imposta il colore di una cella di Excel a partire da un oggetto System.Drawing.Color del Framework. Da notare che per convertire la structure System.Drawing.Color (che &#232; a 24 bit) nell&#8217;oggetto Color di Excel il modo migliore &#232; usare il metodo <B>RGB</B> della classe <B>Microsoft.VisualBasic.Information</B>.<o:p></o:p></SPAN></P>
<P class=MsoBodyText style="MARGIN: 0cm 0cm 0pt"><SPAN lang=IT><FONT face=Verdana size=2>Questo &#232; uno dei rarissimi casi in cui pu&#242; essere consigliabile includere il namespace Microsoft.VisualBasic in un progetto C#!!!</FONT></SPAN><SPAN lang=IT style="COLOR: blue; FONT-FAMILY: 'Courier New'"><o:p></o:p></SPAN></P></bloghelper>?></span></p><img src ="http://blog.shareoffice.it/icantelli/aggbug/172.aspx" width = "1" height = "1" /></body></item></channel></rss>
