<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>enumerating &#8211; MaxVergelli.com</title>
	<atom:link href="https://www.maxvergelli.com/tag/enumerating/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.maxvergelli.com</link>
	<description>sourcecode repository</description>
	<lastBuildDate>Tue, 07 Apr 2020 13:41:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i2.wp.com/www.maxvergelli.com/wp-content/uploads/2020/04/wp-1586823685141.png?fit=32%2C32&#038;ssl=1</url>
	<title>enumerating &#8211; MaxVergelli.com</title>
	<link>https://www.maxvergelli.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">34603511</site>	<item>
		<title>How to export an ASP Associative Array to XML</title>
		<link>https://www.maxvergelli.com/how-to-export-an-asp-associative-array-to-xml/</link>
					<comments>https://www.maxvergelli.com/how-to-export-an-asp-associative-array-to-xml/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Sat, 15 Feb 2020 16:27:57 +0000</pubDate>
				<category><![CDATA[Classic ASP]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MS Access]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[array-function]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[asp-associative-array]]></category>
		<category><![CDATA[associative-array]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[data-layer]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[datetime-conversion]]></category>
		<category><![CDATA[enumerate]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[helper-class]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[string-conversion]]></category>
		<category><![CDATA[string-manipulation]]></category>
		<category><![CDATA[wrapper-class]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=82</guid>

					<description><![CDATA[&#8220;Asp Associative Array Class&#8221; provides a method to easly export all items to a well formatted XML string. For example, You can create a new *.ASP file : [sourcecode language=&#8221;vb&#8221;] &#60;!&#8211;#include file=&#34;AssociativeArrayClass.asp&#34; &#8211;&#62; &#60;% Dim Person, God Set Person = &#8230; <a class="kt-excerpt-readmore" href="https://www.maxvergelli.com/how-to-export-an-asp-associative-array-to-xml/" aria-label="How to export an ASP Associative Array to XML">Read More</a>]]></description>
										<content:encoded><![CDATA[<p><a href="https://sourceforge.net/projects/asp-assoc-array/files/ASP_Associative_Array.rar/download" target="_blank" rel="noopener noreferrer">&#8220;Asp Associative Array Class&#8221;</a> provides a method to easly export all items to a well formatted XML string. For example, You can create a new *.ASP file :</p>
[sourcecode language=&#8221;vb&#8221;]
&lt;!&#8211;#include file=&quot;AssociativeArrayClass.asp&quot; &#8211;&gt;<br />
&lt;%<br />
Dim Person, God<br />
Set Person = New AssociativeArray<br />
Set God = New AssociativeArray<br />
Person(&quot;name&quot;) = &quot;Max&quot;<br />
Person(&quot;surname&quot;) = &quot;Vergelli&quot;<br />
God(&quot;name&quot;) = &quot;Jesus&quot;<br />
God(&quot;surname&quot;) = &quot;Christ&quot;<br />
Dim World<br />
Set World = New AssociativeArray<br />
World(1) = Person<br />
World(2) = God<br />
response.Write World.ToXML()<br />
%&gt;<br />
[/sourcecode]
<p>And You will get out the following XML:</p>
[sourcecode language=&#8221;xml&#8221;]
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />
&lt;array&gt;<br />
      &lt;key&gt;<br />
            &lt;name&gt;&lt;![CDATA[1]]&gt;&lt;/name&gt;<br />
            &lt;value&gt;<br />
                    &lt;key&gt;<br />
                           &lt;name&gt;&lt;![CDATA[name]]&gt;&lt;/name&gt;<br />
                           &lt;value&gt;&lt;![CDATA[Max]]&gt;&lt;/value&gt;<br />
                    &lt;/key&gt;<br />
                    &lt;key&gt;<br />
                           &lt;name&gt;&lt;![CDATA[surname]]&gt;&lt;/name&gt;<br />
                           &lt;value&gt;&lt;![CDATA[Vergelli]]&gt;&lt;/value&gt;<br />
                   &lt;/key&gt;<br />
           &lt;/value&gt;<br />
      &lt;/key&gt;<br />
      &lt;key&gt;<br />
             &lt;name&gt;&lt;![CDATA[2]]&gt;&lt;/name&gt;<br />
             &lt;value&gt;<br />
                    &lt;key&gt;<br />
                           &lt;name&gt;&lt;![CDATA[name]]&gt;&lt;/name&gt;<br />
                           &lt;value&gt;&lt;![CDATA[Jesus]]&gt;&lt;/value&gt;<br />
                    &lt;/key&gt;<br />
                    &lt;key&gt;<br />
                          &lt;name&gt;&lt;![CDATA[surname]]&gt;&lt;/name&gt;<br />
                          &lt;value&gt;&lt;![CDATA[Christ]]&gt;&lt;/value&gt;<br />
                    &lt;/key&gt;<br />
             &lt;/value&gt;<br />
       &lt;/key&gt;<br />
&lt;/array&gt;<br />
[/sourcecode]
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/how-to-export-an-asp-associative-array-to-xml/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">82</post-id>	</item>
		<item>
		<title>How to populate an ASP Associative Array with records from MySQL / Access database Table</title>
		<link>https://www.maxvergelli.com/how-to-populate-an-asp-associative-array-with-records-from-mysql-access-database-table/</link>
					<comments>https://www.maxvergelli.com/how-to-populate-an-asp-associative-array-with-records-from-mysql-access-database-table/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Sat, 08 Feb 2020 16:17:39 +0000</pubDate>
				<category><![CDATA[Classic ASP]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MS Access]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[array-function]]></category>
		<category><![CDATA[asp-associative-array]]></category>
		<category><![CDATA[associative-array]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[data-layer]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[dataset]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[helper-class]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[string-manipulation]]></category>
		<category><![CDATA[wrapper-class]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=80</guid>

					<description><![CDATA[In this example, You can learn how to populate an ASP Associative Array with the records of a database table (MS Access or MySQL); then, how to programmatically manage well structured data without any extra SQL. Before to start: For &#8230; <a class="kt-excerpt-readmore" href="https://www.maxvergelli.com/how-to-populate-an-asp-associative-array-with-records-from-mysql-access-database-table/" aria-label="How to populate an ASP Associative Array with records from MySQL / Access database Table">Read More</a>]]></description>
										<content:encoded><![CDATA[<p>In this example, You can learn how to populate an ASP Associative Array with the records of a database table (MS Access or MySQL); then, how to programmatically manage well structured data without any extra SQL.</p>
<p><strong>Before to start:<br />
</strong>For this tutorial, You need to download this <a href="https://sourceforge.net/projects/asp-assoc-array/files/myDatabase_Example_for_Tutorial.mdb/download" target="_blank" rel="noopener noreferrer">MS Access database</a> example or You can create a new one in MySQL executing this SQL:</p>
[sourcecode language=&#8221;sql&#8221;]
CREATE TABLE `myTable` (<br />
`myField1` INT( 11 ) NOT NULL ,<br />
`myField2` VARCHAR( 255 ) NULL DEFAULT &#8216;test&#8217;,<br />
`myField3` VARCHAR( 255 ) NULL DEFAULT &#8216;test&#8217;,<br />
PRIMARY KEY ( `myField1` )<br />
) TYPE = MYISAM ;<br />
INSERT INTO `myTable` (`myField1`, `myField2`, `myField3`)<br />
 VALUES(1, &#8216;rec1 Text2&#8217;, &#8216;rec1 Text3&#8217;);<br />
INSERT INTO `myTable` (`myField1`, `myField2`, `myField3`)<br />
 VALUES(2, &#8216;rec2 Text2&#8217;, &#8216;rec2 Text3&#8217;);<br />
INSERT INTO `myTable` (`myField1`, `myField2`, `myField3`)<br />
 VALUES(3, &#8216;rec3 Text2&#8217;, &#8216;rec3 Text3&#8217;);<br />
[/sourcecode]
<p>Besides, to create an &#8220;AssociativeArray&#8221; object, You need to include the <a href="https://sourceforge.net/projects/asp-assoc-array/files/ASP_Associative_Array.rar/download" target="_blank" rel="noopener noreferrer">&#8220;ASP Associative Array Class&#8221;</a> file in your asp page with an include statement:</p>
[sourcecode language=&#8221;vb&#8221;]
&lt;!&#8211;#include file=&quot;AssociativeArrayClass.asp&quot; &#8211;&gt;<br />
[/sourcecode]
<p><strong>Tutorial:</strong><br />
The target is to grab data from a database Table and save records in an Associative Array, then You need to create a Database connection by ADODB&#8230;</p>
[sourcecode language=&#8221;vb&#8221;]Set DbConnection = Server.CreateObject(&quot;ADODB.Connection&quot;)[/sourcecode]
<p>Select a Provider for MS Access or MySQL:</p>
[sourcecode language=&#8221;vb&#8221;]dbConnectionString = _<br />
   &quot;driver={Microsoft Access Driver (*.mdb)}; DBQ=&quot; &amp; _<br />
           Server.MapPath(&quot;myDatabase.mdb&quot;)[/sourcecode]
<p>For MySQL Databases You can also use a connection string like the following:</p>
[sourcecode language=&#8221;vb&#8221;]&quot;driver={MySQL ODBC 3.51 Driver}; Server=; Uid=; Pwd=; Database=;&quot;[/sourcecode]
<p>Open a database connection and create a SQL Select:</p>
[sourcecode language=&#8221;vb&#8221;]DbConnection.Open dbConnectionString<br />
Dim sql : sql = &quot;SELECT * FROM myTable&quot;[/sourcecode]
<p>Create and Populate the Associative Array with selected Records and close database connection:</p>
[sourcecode language=&#8221;vb&#8221;]Dim Table<br />
Set Table = New AssociativeArray<br />
Table.Fill DbConnection, sql<br />
Set DbConnection = Nothing[/sourcecode]
<p><strong>Manage Records inside the Associative Array:</strong><br />
Right now, You can manage each record (and its values) inside the Associative Array. For example, You could get the first Record and its Values in each Field:</p>
[sourcecode language=&#8221;vb&#8221;]Response.Write( _<br />
                Table(0)(&quot;myField1&quot;) &amp; &quot; , &quot; &amp; _<br />
                Table(0)(&quot;myField2&quot;) &amp; &quot; , &quot; &amp; _<br />
                Table(0)(&quot;myField3&quot;) &amp; &quot;&lt;br /&gt;&quot;)[/sourcecode]
<p>the following code gets the second Record and its Values in each Field:</p>
[sourcecode language=&#8221;vb&#8221;]Response.Write( _<br />
                Table(1)(&quot;myField1&quot;) &amp; &quot; , &quot; &amp; _<br />
                Table(1)(&quot;myField2&quot;) &amp; &quot; , &quot; &amp; _<br />
                Table(1)(&quot;myField3&quot;) &amp; &quot;&lt;br /&gt;&quot;)[/sourcecode]
<p>it gets the total Records Count</p>
[sourcecode language=&#8221;vb&#8221;]Response.Write(&quot;&lt;p&gt;Total Records: &quot; &amp; Table.Count &amp; &quot;&lt;/p&gt;&quot;)[/sourcecode]
<p>this enumerates all Records inside the Associative Array:</p>
[sourcecode language=&#8221;vb&#8221;]Response.Write(&quot;&lt;ul&gt;&quot;)<br />
For Each row In Table.Items<br />
   Dim record<br />
   Set record = row.Value &#8216;get current Record Object<br />
   Response.Write(&quot;&lt;li&gt;&quot; &amp; record(&quot;myField1&quot;) &amp; &quot; : &quot; &amp; _<br />
                           record(&quot;myField2&quot;) &amp; &quot; : &quot; &amp; _<br />
                           record(&quot;myField3&quot;) &amp; &quot;&lt;/li&gt;&quot;)<br />
Next<br />
Response.Write(&quot;&lt;/ul&gt;&quot;)[/sourcecode]
<p>and finally it gets all records by index (zero-based):</p>
[sourcecode language=&#8221;vb&#8221;]Response.Write(&quot;&lt;ul&gt;&quot;)<br />
For n = 0 To Table.Count &#8211; 1<br />
     Response.Write(&quot;&lt;li&gt;&quot; &amp; Table(n)(&quot;myField1&quot;) &amp; &quot; : &quot; &amp; _<br />
                             Table(n)(&quot;myField2&quot;) &amp; &quot; : &quot; &amp; _<br />
                             Table(n)(&quot;myField3&quot;) &amp; &quot;&lt;/li&gt;&quot;)<br />
Next<br />
Response.Write(&quot;&lt;/ul&gt;&quot;)[/sourcecode]
<p>That&#8217;s all,<br />
Get the full example at <a href="http://sourceforge.net/projects/asp-assoc-array/">http://sourceforge.net/projects/asp-assoc-array/</a></p>
<p>Max</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/how-to-populate-an-asp-associative-array-with-records-from-mysql-access-database-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">80</post-id>	</item>
		<item>
		<title>How to use Associative Arrays in ASP</title>
		<link>https://www.maxvergelli.com/how-to-use-associative-arrays-in-asp/</link>
					<comments>https://www.maxvergelli.com/how-to-use-associative-arrays-in-asp/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Sat, 01 Feb 2020 16:03:13 +0000</pubDate>
				<category><![CDATA[Classic ASP]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[MS Access]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[array-function]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[asp-associative-array]]></category>
		<category><![CDATA[associative-array]]></category>
		<category><![CDATA[classic-asp]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[data-layer]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[datetime-conversion]]></category>
		<category><![CDATA[enumerate]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[helper-class]]></category>
		<category><![CDATA[isarray-function]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[string-conversion]]></category>
		<category><![CDATA[string-manipulation]]></category>
		<category><![CDATA[vbscript]]></category>
		<category><![CDATA[wrapper-class]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=78</guid>

					<description><![CDATA[First of all, You need to download the &#8220;Asp Associative Array class&#8221; then include the file &#8220;AssociativeArrayClass.asp&#8221; in your asp page. Right now, You can start declaring associative arrays in ASP with the following syntax: [sourcecode language=&#8221;vb&#8221;] Dim Person Set &#8230; <a class="kt-excerpt-readmore" href="https://www.maxvergelli.com/how-to-use-associative-arrays-in-asp/" aria-label="How to use Associative Arrays in ASP">Read More</a>]]></description>
										<content:encoded><![CDATA[<p>First of all, You need to download the <a href="http://sourceforge.net/projects/asp-assoc-array/">&#8220;Asp Associative Array class&#8221;</a> then include the file &#8220;AssociativeArrayClass.asp&#8221; in your asp page.</p>
<p>Right now, You can start declaring associative arrays in ASP with the following syntax:</p>
[sourcecode language=&#8221;vb&#8221;]
Dim Person<br />
Set Person = New AssociativeArray<br />
Person(&quot;name&quot;)    =   &quot;Max&quot;<br />
Person(&quot;surname&quot;) =   &quot;Vergelli&quot;<br />
Response.Write Person(&quot;name&quot;) &amp; &quot; &quot; &amp; Person(&quot;surname&quot;)<br />
[/sourcecode]
<p>In the above example, the key &#8220;name&#8221; in &#8220;Person&#8221; object, stores &#8220;Max&#8221; value. You can set strings or integers for the key and <strong>any object/variant type for the relative value</strong>. However, You can not set key with Null or &#8220;&#8221; strings like the following:</p>
[sourcecode language=&#8221;vb&#8221;]
&#8216;invalid keys&#8230;<br />
Person(Null) = &quot;Null Key&quot;<br />
Person(&quot;&quot;) = &quot;Empty String&quot;<br />
Dim undefined<br />
Person(undefined) = &quot;Variable Not Initialized&quot;<br />
Response.Write Person(&quot;&quot;) &amp; Person(Null) &amp; Person(undefined)<br />
[/sourcecode]
<p><strong>How to get every item of the associative array:</strong><br />
You can make a &#8220;For Each&#8221; loop on the array like in the following code</p>
[sourcecode language=&#8221;vb&#8221;]
For Each element In Person.Items<br />
   Response.Write element.Key &amp; &quot; : &quot; &amp; element.Value &amp; vbCrLf<br />
Next<br />
[/sourcecode]
<p>&#8220;Person.Items&#8221; gets all the items inside the associative array and for each item You can get &#8220;Key&#8221; and &#8220;Value&#8221; properties.</p>
<p><strong>How to copy an associative array:</strong></p>
[sourcecode language=&#8221;vb&#8221;]
Dim Person_Clone             &#8216;it&#8217;s a Variant type<br />
Set Person_Clone = Person    &#8216;NOTE: Use &quot;Set&quot; statement!<br />
&#8216;print values<br />
Response.Write Person_Clone(&quot;name&quot;) &amp; &quot; &quot; &amp; Person_Clone(&quot;surname&quot;) &amp; vbCrLf<br />
&#8216;get each key/value<br />
For Each element In Person_Clone.Items<br />
   Response.Write element.Key &amp; &quot; : &quot; &amp; element.Value &amp; vbCrLf<br />
Next<br />
[/sourcecode]
<p><strong>How to create nested associative arrays&#8230;</strong><br />
You can create infinite nested associative arrays and accessing them like the following:</p>
[sourcecode language=&#8221;vb&#8221;]
Dim Person<br />
Set Person = New AssociativeArray<br />
Person(&quot;name&quot;) = &quot;Max&quot;<br />
Person(&quot;surname&quot;) = &quot;Vergelli&quot;<br />
Dim People<br />
Set People = New AssociativeArray<br />
People(1) = Person<br />
People(2) = Person<br />
People(3) = Person<br />
Response.Write People(1)(&quot;name&quot;) &amp; &quot; &quot; &amp; People(1)(&quot;surname&quot;)<br />
[/sourcecode]
<p>Besides, You can enumerate all the keys/values inside the &#8220;People&#8221; associative array object</p>
[sourcecode language=&#8221;vb&#8221;]
For Each element In People.Items<br />
   Dim el_person<br />
   Set el_person = element.Value<br />
   Response.Write el_person(&quot;name&quot;) &amp; &quot; : &quot; &amp; el_person(&quot;surname&quot;) &amp; vbCrLf<br />
Next<br />
[/sourcecode]
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/how-to-use-associative-arrays-in-asp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">78</post-id>	</item>
		<item>
		<title>Online JSON Validator</title>
		<link>https://www.maxvergelli.com/online-json-validator/</link>
					<comments>https://www.maxvergelli.com/online-json-validator/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Mon, 06 Jan 2020 15:16:20 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[conversion]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data-layer]]></category>
		<category><![CDATA[enumerate]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[string-conversion]]></category>
		<category><![CDATA[string-manipulation]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[validator]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=61</guid>

					<description><![CDATA[If You are bored of having to test many JSON structures in JavaScript, You can validate your JSON data with this useful online tool: http://jsonlint.com/]]></description>
										<content:encoded><![CDATA[<p>If You are bored of having to test many JSON structures in JavaScript, You can validate your JSON data with this useful online tool: <a href="http://jsonlint.com/">http://jsonlint.com/</a> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/online-json-validator/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61</post-id>	</item>
		<item>
		<title>Updated version of CryptographyHelper class for .NET Framework 4</title>
		<link>https://www.maxvergelli.com/cryptography-helper-class-for-net-framework-4/</link>
					<comments>https://www.maxvergelli.com/cryptography-helper-class-for-net-framework-4/#comments</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Fri, 27 May 2016 14:53:01 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[base64]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[decryption]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[enumerate]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hashing]]></category>
		<category><![CDATA[helper-class]]></category>
		<category><![CDATA[MD5]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rijndael]]></category>
		<category><![CDATA[SHA1]]></category>
		<category><![CDATA[SHA256]]></category>
		<category><![CDATA[vb.net]]></category>
		<category><![CDATA[wrapper-class]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=30</guid>

					<description><![CDATA[This updated version of mine “CryptographyHelper” wrapper/helper class supports .NET Framework 4 . With this vb.net class you can easly encrypt/decrypt strings using a robust symmetric Rijndael algorithm or you can get also MD5 or SHA1, SHA256 hash codes of &#8230; <a class="kt-excerpt-readmore" href="https://www.maxvergelli.com/cryptography-helper-class-for-net-framework-4/" aria-label="Updated version of CryptographyHelper class for .NET Framework 4">Read More</a>]]></description>
										<content:encoded><![CDATA[<p>This updated version of mine “CryptographyHelper” wrapper/helper class supports .NET Framework 4 .</p>
<p>With this vb.net class you can easly encrypt/decrypt strings using a robust <strong>symmetric Rijndael algorithm</strong> or you can get also <strong>MD5</strong> or <strong>SHA1</strong>, <strong>SHA256 hash codes</strong> of a string.</p>
<p>During the encryption, the CryptographyHelper encrypts a clear text and saves it in a binary stream, then converts the binary output in <strong>Hexadecimal or Base64 encoding type</strong> for a string rapresentation. The opposite job during the decryption.</p>
<p>How to use:</p>
[sourcecode language=&#8221;vb&#8221;]
Imports {project&#8217;s name}.Cryptography</p>
<p>Dim crypt As New CryptographyHelper</p>
<p>&#8216;select your favorite encoding type (Hexadecimal or Base64) for encrypted/decryptet text<br />
&#8216;in output/input;<br />
&#8216;during the encryption, the CryptographyHelper encrypts a clear text and saves it in a<br />
&#8216;binary stream, then converts the binary output in Hexadecimal or Base64 encoding type<br />
&#8216;for a string rapresentation. The opposite job during the decryption.<br />
crypt.EncodingType = CryptographyHelper.ENCODING_TYPE.Hexadecimal</p>
<p>&#8216;choose a password<br />
Dim password As String = &quot;my secret password&quot;</p>
<p>&#8216;encrypt/decrypt strings using a robust symmetric Rijndael algorithm<br />
Dim encrypted_text As String = crypt.Encrypt(&quot;plain text to encrypt&#8230;&quot;, password)<br />
Dim decrypted_text As String = crypt.Decrypt(encrypted_text, password)</p>
<p>&#8216;you can also get an hash of a string<br />
Dim MD5hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.MD5)<br />
Dim SHA1hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.SHA1)<br />
Dim SHA256hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.SHA256)<br />
[/sourcecode]
<p>Enjoy 🙂</p>
<p>Max</p>
[sourcecode language=&#8221;vb&#8221;]
<p>&#8216;	CryptographyHelper &amp; Cryptography VB.NET classes for .NET Framework 4<br />
&#8216;	http://www.maxvergelli.com/<br />
&#8216;<br />
&#8216;	Copyright (c) 2016 Max Vergelli<br />
&#8216;<br />
&#8216;   Vers. 3.5.1<br />
&#8216;   Date: 23/03/2016<br />
&#8216;<br />
&#8216;   Description:<br />
&#8216;   With the “CryptographyHelper” wrapper class, you can easly encrypt/decrypt strings in<br />
&#8216;   .NET Framework 4 using a robust symmetric Rijndael algorithm or you can get also MD5<br />
&#8216;   or SHA1, SHA256 hash codes of a string.<br />
&#8216;   During the encryption, the CryptographyHelper encrypts a clear text and saves it in a<br />
&#8216;   binary stream, then converts the binary output in Hexadecimal or Base64 encoding type<br />
&#8216;   for a string rapresentation. The opposite job during the decryption.<br />
&#8216;<br />
&#8216;<br />
&#8216;   Usage:<br />
&#8216;<br />
&#8216;   Imports {project&#8217;s name}.Cryptography<br />
&#8216;<br />
&#8216;   Dim crypt As New CryptographyHelper<br />
&#8216;<br />
&#8216;   &#8216;select your favorite encoding type (Hexadecimal or Base64) for encrypted/decryptet text<br />
&#8216;   &#8216;in output/input;<br />
&#8216;   &#8216;during the encryption, the CryptographyHelper encrypts a clear text and saves it in a<br />
&#8216;   &#8216;binary stream, then converts the binary output in Hexadecimal or Base64 encoding type<br />
&#8216;   &#8216;for a string rapresentation. The opposite job during the decryption.<br />
&#8216;   crypt.EncodingType = CryptographyHelper.ENCODING_TYPE.Hexadecimal<br />
&#8216;<br />
&#8216;   &#8216;choose a password<br />
&#8216;   Dim password As String = &quot;my secret password&quot;<br />
&#8216;<br />
&#8216;   encrypt/decrypt strings using a robust symmetric Rijndael algorithm<br />
&#8216;   Dim encrypted_text As String = crypt.Encrypt(&quot;plain text to encrypt&#8230;&quot;, password)<br />
&#8216;   Dim decrypted_text As String = crypt.Decrypt(encrypted_text, password)<br />
&#8216;<br />
&#8216;   &#8216;you can also get an hash of a string<br />
&#8216;   Dim MD5hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.MD5)<br />
&#8216;   Dim SHA1hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.SHA1)<br />
&#8216;   Dim SHA256hash As String = crypt.GetHash(&quot;string to hash&quot;, CryptographyHelper.HASH_TYPE.SHA256)<br />
&#8216;<br />
&#8216;<br />
&#8216;   License:<br />
&#8216;<br />
&#8216;	Permission is hereby granted, free of charge, to any person obtaining a copy<br />
&#8216;	of this software and associated documentation files (the &quot;Software&quot;), to deal<br />
&#8216;	in the Software without restriction, including without limitation the rights<br />
&#8216;	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell<br />
&#8216;	copies of the Software, and to permit persons to whom the Software is<br />
&#8216;	furnished to do so, subject to the following conditions:<br />
&#8216;<br />
&#8216;	The above copyright notice and this permission notice shall be included in<br />
&#8216;	all copies or substantial portions of the Software.<br />
&#8216;<br />
&#8216;	THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br />
&#8216;	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br />
&#8216;	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE<br />
&#8216;	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br />
&#8216;	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,<br />
&#8216;	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN<br />
&#8216;	THE SOFTWARE.</p>
<p>Imports System<br />
Imports System.IO<br />
Imports System.Text<br />
Imports System.Security.Cryptography</p>
<p>Namespace Cryptography</p>
<p>    Public Class CryptographyHelper</p>
<p>        Private _encoding As ENCODING_TYPE</p>
<p>        Public Enum ENCODING_TYPE As Integer<br />
            Hexadecimal = 1<br />
            Base64 = 2<br />
        End Enum</p>
<p>        Public Enum HASH_TYPE As Integer<br />
            MD5 = 1<br />
            SHA1 = 2<br />
            SHA256 = 3<br />
            SHA512 = 4<br />
        End Enum</p>
<p>        Public Sub New(Optional ByVal encoding As ENCODING_TYPE = ENCODING_TYPE.Hexadecimal)</p>
<p>            &#8216;by default encryption/hashing outputs hexadecimal strings<br />
            &#8216;and decryption get hexstrings as input<br />
            If encoding &lt;&gt; ENCODING_TYPE.Hexadecimal And encoding &lt;&gt; ENCODING_TYPE.Base64 Then<br />
                encoding = ENCODING_TYPE.Hexadecimal<br />
            End If<br />
            _encoding = encoding</p>
<p>        End Sub</p>
<p>        Public Property EncodingType() As ENCODING_TYPE<br />
            Get<br />
                Return _encoding<br />
            End Get<br />
            Set(ByVal value As ENCODING_TYPE)<br />
                _encoding = value<br />
            End Set<br />
        End Property</p>
<p>        Public Function GetHash(ByRef input As String, Optional ByVal type As HASH_TYPE = HASH_TYPE.MD5) As String</p>
<p>            Dim crypt As New Cryptography<br />
            Dim bytes() As Byte = Nothing<br />
            Select Case type<br />
                Case HASH_TYPE.MD5<br />
                    bytes = crypt.CreateMD5Hash(input)<br />
                Case HASH_TYPE.SHA1<br />
                    bytes = crypt.CreateSHA1Hash(input)<br />
                Case HASH_TYPE.SHA256<br />
                    bytes = crypt.CreateSHA256Hash(input)<br />
                Case HASH_TYPE.SHA512<br />
                    bytes = crypt.CreateSHA512Hash(input)<br />
                Case Else<br />
                    bytes = crypt.CreateMD5Hash(input)<br />
            End Select<br />
            Dim hash As String = &quot;&quot;<br />
            Select Case _encoding<br />
                Case ENCODING_TYPE.Hexadecimal<br />
                    hash = crypt.BytesToHexString(bytes)<br />
                Case ENCODING_TYPE.Base64<br />
                    hash = crypt.BytesToBase64(bytes)<br />
                Case Else<br />
                    hash = crypt.BytesToHexString(bytes)<br />
            End Select<br />
            crypt = Nothing<br />
            Return hash</p>
<p>        End Function</p>
<p>        Public Function Encrypt(ByRef input As String, ByRef password As String) As String</p>
<p>            Dim crypt As New Cryptography(password)<br />
            Dim bytes() As Byte = crypt.Encrypt(input)<br />
            Dim encrypted As String = &quot;&quot;<br />
            If bytes IsNot Nothing Then<br />
                Select Case _encoding<br />
                    Case ENCODING_TYPE.Hexadecimal<br />
                        encrypted = crypt.BytesToHexString(bytes)<br />
                    Case ENCODING_TYPE.Base64<br />
                        encrypted = crypt.BytesToBase64(bytes)<br />
                    Case Else<br />
                        encrypted = crypt.BytesToHexString(bytes)<br />
                End Select<br />
            End If<br />
            crypt = Nothing<br />
            Return encrypted</p>
<p>        End Function</p>
<p>        Public Function Decrypt(ByRef input As String, ByRef password As String) As String</p>
<p>            Dim decrypted As String = &quot;&quot;<br />
            If input.Length &gt; 0 Then<br />
                Dim crypt As New Cryptography(password)<br />
                Dim enc_bytes() As Byte = Nothing<br />
                Select Case _encoding<br />
                    Case ENCODING_TYPE.Hexadecimal<br />
                        enc_bytes = crypt.HexStringToBytes(input)<br />
                    Case ENCODING_TYPE.Base64<br />
                        enc_bytes = crypt.Base64ToBytes(input)<br />
                    Case Else<br />
                        enc_bytes = crypt.HexStringToBytes(input)<br />
                End Select<br />
                decrypted = crypt.Decrypt(enc_bytes)<br />
                crypt = Nothing<br />
            End If<br />
            Return decrypted</p>
<p>        End Function</p>
<p>    End Class</p>
<p>    Public Class Cryptography</p>
<p>        Private _key_str As String = Nothing<br />
        Private _key_byte() As Byte = Nothing<br />
        Private _txt_converter As New UnicodeEncoding<br />
        Private _rijndael As New RijndaelManaged &#8216;&quot;rèin-daal&quot; 🙂</p>
<p>        Public Sub New(Optional ByVal encryption_key As String = &quot;&quot;)</p>
<p>            If encryption_key &lt;&gt; &quot;&quot; Then EncryptionKey = encryption_key</p>
<p>        End Sub</p>
<p>        Protected Overrides Sub Finalize()</p>
<p>            If _txt_converter IsNot Nothing Then<br />
                _txt_converter = Nothing<br />
            End If<br />
            If _rijndael IsNot Nothing Then<br />
                _rijndael = Nothing<br />
            End If<br />
            _key_str = Nothing<br />
            _key_byte = Nothing</p>
<p>        End Sub</p>
<p>        Public Property EncryptionKey() As String</p>
<p>            Get<br />
                Return _key_str<br />
            End Get</p>
<p>            Set(ByVal value As String)</p>
<p>                Try<br />
                    &#8216;set the key string<br />
                    _key_str = value</p>
<p>                    &#8216;set hash in bytes of the key string<br />
                    Dim hash256 As New SHA256Managed<br />
                    _key_byte = hash256.ComputeHash(_txt_converter.GetBytes(_key_str))<br />
                    hash256 = Nothing</p>
<p>                    &#8216;If UBound(_key_byte) &lt; 0 Then Exit Property         &#8216;.NET &lt;= 3.5<br />
                    If _key_byte.GetUpperBound(0) &lt; 0 Then Exit Property &#8216;.NET Framework 4</p>
<p>                    &#8216;set Rijndael Key and IV vector for 256 bit encryption<br />
                    Dim main_key(31) As Byte<br />
                    Dim main_vector(15) As Byte<br />
                    Dim diff_block As Integer = 5<br />
                    _rijndael.KeySize = 256 &#8216;bit</p>
<p>                    Dim n As Integer = 0<br />
                    Dim x As Integer = 0<br />
                    Dim y As Integer = 0</p>
<p>                    &#8216;For n = 0 To UBound(main_key)         &#8216;.NET &lt;= 3.5<br />
                    For n = 0 To main_key.GetUpperBound(0) &#8216;.NET Framework 4</p>
<p>                        main_key(n) = _key_byte(x)<br />
                        &#8216;If n &gt; diff_block And n &lt;= UBound(main_vector) + diff_block Then         &#8216;.NET &lt;= 3.5<br />
                        If n &gt; diff_block And n &lt;= main_vector.GetUpperBound(0) + diff_block Then &#8216;.NET Framework 4<br />
                            main_vector(y) = _key_byte(x)<br />
                            y = y + 1<br />
                        End If<br />
                        x = x + 1</p>
<p>                        &#8216;If x &gt; UBound(_key_byte) Then x = 0         &#8216;.NET &lt;= 3.5<br />
                        If x &gt; _key_byte.GetUpperBound(0) Then x = 0 &#8216;.NET Framework 4</p>
<p>                    Next<br />
                    _rijndael.Key = main_key<br />
                    _rijndael.IV = main_vector</p>
<p>                Catch</p>
<p>                    &#8216;set a blank encryption key then we cannot encrypt/decrypt<br />
                    _key_str = Nothing</p>
<p>                End Try</p>
<p>            End Set</p>
<p>        End Property</p>
<p>        Public Function Encrypt(ByRef clear_text As String) As Byte()</p>
<p>            Dim enc_bytes() As Byte = Nothing<br />
            Try<br />
                If _key_str IsNot Nothing Then<br />
                    &#8216;get byte array from text<br />
                    Dim bytes() As Byte = _txt_converter.GetBytes(clear_text)</p>
<p>                    &#8216;encrypt data<br />
                    Dim encryptor As ICryptoTransform = _rijndael.CreateEncryptor()<br />
                    Dim msEncrypt As New MemoryStream<br />
                    Dim csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)</p>
<p>                    &#8216;write all data to the crypto stream and flush it<br />
                    csEncrypt.Write(bytes, 0, bytes.Length)<br />
                    csEncrypt.FlushFinalBlock()</p>
<p>                    &#8216;get encrypted byte array<br />
                    enc_bytes = msEncrypt.ToArray()</p>
<p>                    msEncrypt = Nothing<br />
                    csEncrypt = Nothing<br />
                End If<br />
            Catch</p>
<p>            End Try</p>
<p>            Return enc_bytes</p>
<p>        End Function</p>
<p>        Public Function Decrypt(ByRef encrypted_text() As Byte) As String</p>
<p>            Dim dec_text As String = Nothing</p>
<p>            Try<br />
                If _key_str IsNot Nothing Then<br />
                    Dim decryptor As ICryptoTransform = _rijndael.CreateDecryptor()<br />
                    Dim msDecrypt As New MemoryStream(encrypted_text)<br />
                    Dim csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)</p>
<p>                    &#8216;prepare buffer<br />
                    Dim bytes() As Byte = New Byte(encrypted_text.Length &#8211; 1) {}</p>
<p>                    &#8216;read the data out of the crypto stream<br />
                    csDecrypt.Read(bytes, 0, bytes.Length)</p>
<p>                    &#8216;convert the byte array back into a string<br />
                    dec_text = _txt_converter.GetString(bytes)</p>
<p>                    &#8216;strip null chars at the end of the string<br />
                    StripNullAtEnd(dec_text)</p>
<p>                    msDecrypt = Nothing<br />
                    csDecrypt = Nothing<br />
                End If<br />
            Catch</p>
<p>            End Try</p>
<p>            Return dec_text</p>
<p>        End Function</p>
<p>        Public Function BytesToBase64(ByRef input_bytes() As Byte) As String</p>
<p>            Dim s As String = Nothing<br />
            Try<br />
                s = Convert.ToBase64String(input_bytes)<br />
            Catch</p>
<p>            End Try<br />
            Return s</p>
<p>        End Function</p>
<p>        Public Function Base64ToBytes(ByRef input_base64 As String) As Byte()</p>
<p>            Dim b() As Byte = Nothing<br />
            Try<br />
                b = Convert.FromBase64String(input_base64)<br />
            Catch</p>
<p>            End Try<br />
            Return b</p>
<p>        End Function</p>
<p>        Public Function BytesToHexString(ByRef input_bytes() As Byte) As String</p>
<p>            Dim s As String = Nothing<br />
            Try<br />
                &#8216;Dim s As String = BitConverter.ToString(input_bytes).Replace(&quot;-&quot;, String.Empty)<br />
                Dim builder As New StringBuilder()<br />
                For i As Integer = 0 To input_bytes.Length &#8211; 1<br />
                    builder.AppendFormat(&quot;{0:x2}&quot;, input_bytes(i))<br />
                Next<br />
                s = builder.ToString()<br />
                builder = Nothing<br />
            Catch</p>
<p>            End Try<br />
            Return s</p>
<p>        End Function</p>
<p>        Public Function HexStringToBytes(ByRef input_hex_string As String) As Byte()</p>
<p>            Dim bytes As Byte() = Nothing<br />
            Try<br />
                &#8216;i variable used to hold position in string<br />
                Dim i As Integer = 0<br />
                &#8216;x variable used to hold byte array element position<br />
                Dim x As Integer = 0<br />
                &#8216;allocate byte array based on half of string length<br />
                bytes = New Byte((input_hex_string.Length)  2 &#8211; 1) {}<br />
                &#8216;loop through the string &#8211; 2 bytes at a time converting<br />
                &#8216;it to decimal equivalent and store in byte array<br />
                While input_hex_string.Length &gt; i + 1<br />
                    Dim lngDecimal As Long = Convert.ToInt32(input_hex_string.Substring(i, 2), 16)<br />
                    bytes(x) = Convert.ToByte(lngDecimal)<br />
                    i = i + 2<br />
                    x += 1<br />
                End While<br />
                &#8216;return the finished byte array of decimal values<br />
            Catch</p>
<p>            End Try<br />
            Return bytes</p>
<p>        End Function</p>
<p>        Public Function CreateMD5Hash(ByRef input As String) As Byte()</p>
<p>            Dim hash As Byte() = Nothing<br />
            Try<br />
                Dim bytes() As Byte = _txt_converter.GetBytes(input)<br />
                Dim objMD5 As New MD5CryptoServiceProvider<br />
                hash = objMD5.ComputeHash(bytes)<br />
                objMD5 = Nothing<br />
            Catch</p>
<p>            End Try<br />
            Return hash</p>
<p>        End Function</p>
<p>        Public Function CreateSHA1Hash(ByRef input As String) As Byte()</p>
<p>            Dim hash As Byte() = Nothing<br />
            Try<br />
                Dim bytes() As Byte = _txt_converter.GetBytes(input)<br />
                Dim objSHA As New SHA1CryptoServiceProvider<br />
                hash = objSHA.ComputeHash(bytes)<br />
                objSHA = Nothing<br />
            Catch</p>
<p>            End Try<br />
            Return hash</p>
<p>        End Function</p>
<p>        Public Function CreateSHA256Hash(ByRef input As String) As Byte()<br />
            Dim hash As Byte() = Nothing<br />
            Try<br />
                Dim bytes() As Byte = _txt_converter.GetBytes(input)<br />
                Dim objSHA As New SHA256CryptoServiceProvider<br />
                hash = objSHA.ComputeHash(bytes)<br />
                objSHA = Nothing<br />
            Catch</p>
<p>            End Try<br />
            Return hash</p>
<p>        End Function</p>
<p>        Public Function CreateSHA512Hash(ByRef input As String) As Byte()<br />
            Dim hash As Byte() = Nothing<br />
            Try<br />
                Dim bytes() As Byte = _txt_converter.GetBytes(input)<br />
                Dim objSHA As New SHA512CryptoServiceProvider<br />
                hash = objSHA.ComputeHash(bytes)<br />
                objSHA = Nothing<br />
            Catch</p>
<p>            End Try<br />
            Return hash</p>
<p>        End Function</p>
<p>        Private Sub StripNullAtEnd(ByRef input_string As String)</p>
<p>            Dim nullchar As Char = Convert.ToChar(0) &#8216;&amp;H0<br />
            If input_string.Length &gt; 0 And input_string.EndsWith(nullchar.ToString) Then<br />
                Dim n As Long<br />
                For n = input_string.Length &#8211; 1 To 0 Step -1<br />
                    If input_string.Chars(n) &lt;&gt; nullchar Then<br />
                        input_string = input_string.Substring(0, n + 1)<br />
                        Exit For<br />
                    End If<br />
                Next<br />
            End If<br />
            Convert.ToString(input_string)</p>
<p>        End Sub</p>
<p>    End Class</p>
<p>End Namespace</p>
[/sourcecode]
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/cryptography-helper-class-for-net-framework-4/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">30</post-id>	</item>
		<item>
		<title>The fastest algorithm in C#/VB.Net to count how many times a value is repeated in a List of items</title>
		<link>https://www.maxvergelli.com/how-to-count-how-many-times-a-value-is-repeated-in-a-list/</link>
					<comments>https://www.maxvergelli.com/how-to-count-how-many-times-a-value-is-repeated-in-a-list/#respond</comments>
		
		<dc:creator><![CDATA[Max]]></dc:creator>
		<pubDate>Fri, 27 May 2016 13:57:51 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[enumerate]]></category>
		<category><![CDATA[enumerating]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[parse]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[string-manipulation]]></category>
		<category><![CDATA[vb.net]]></category>
		<guid isPermaLink="false">http://www.maxvergelli.com/?p=24</guid>

					<description><![CDATA[The faster way (with the best system performance) to count how many times a particular value is repeated in a List of items, it&#8217;s like this [sourcecode language=&#8221;vb&#8221;] Const chars As String = &#34;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&#34; Dim rnd As New Random() &#8216;create &#8230; <a class="kt-excerpt-readmore" href="https://www.maxvergelli.com/how-to-count-how-many-times-a-value-is-repeated-in-a-list/" aria-label="The fastest algorithm in C#/VB.Net to count how many times a value is repeated in a List of items">Read More</a>]]></description>
										<content:encoded><![CDATA[<p>The faster way (with the best system performance) to count how many times a particular value is repeated in a List of items, it&#8217;s like this</p>
[sourcecode language=&#8221;vb&#8221;]
Const chars As String = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;<br />
Dim rnd As New Random()</p>
<p>&#8216;create a long list of random letters<br />
Dim random_letters As List(Of String) = Enumerable.Range(1, 100000).Select(Function(i) chars(rnd.Next(0, chars.Length)).ToString).ToList</p>
<p>&#8216;create a long list of random numbers<br />
Dim random_numbers As List(Of Integer) = Enumerable.Range(1, 100000).Select(Function(i) rnd.Next(100000)).ToList()</p>
<p>&#8216;get a lookup table<br />
Dim lookup_table = random_letters.GetLookupTable</p>
<p>&#8216;count how many times a particular value &quot;B&quot; is repeated in the lookup table of random_letters List<br />
Dim count As Integer = lookup_table.CountValue(&quot;B&quot;)<br />
[/sourcecode]
<p>To do that, You have to add the following two extension methods, <strong>optimized for the best performance</strong>, to my .Net module (at <a href="http://www.maxvergelli.com/useful-extension-methods-for-string-net-class-with-support-of-intellisense/">http://www.maxvergelli.com/useful-extension-methods-for-string-net-class-with-support-of-intellisense/</a>) that extends the String class</p>
[sourcecode language=&#8221;vb&#8221;]
 &#8216;CountValue() count how many times a particular value is repeated in a lookup table</p>
<p>         _<br />
        Public Function CountValue(Of T)(ByRef lookup_table As Dictionary(Of T, Int32), ByRef value As T) As Integer<br />
            Dim c As Integer = 0<br />
            lookup_table.TryGetValue(value, c)<br />
            Return c<br />
        End Function</p>
<p>        &#8216;get a lookup table from a List of items</p>
<p>         _<br />
        Public Function GetLookupTable(Of T)(ByRef list As List(Of T)) As Dictionary(Of T, Int32)<br />
            Dim table As New Dictionary(Of T, Integer)<br />
            For Each s As T In list<br />
                Dim count As Int32 = 0<br />
                If table.TryGetValue(s, count) Then<br />
                    table(s) = count + 1<br />
                Else<br />
                    table(s) = 1<br />
                End If<br />
            Next<br />
            Return table<br />
        End Function<br />
[/sourcecode]
<p>Enjoy,<br />
Max 🙂</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.maxvergelli.com/how-to-count-how-many-times-a-value-is-repeated-in-a-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">24</post-id>	</item>
	</channel>
</rss>
