<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13453815</id><updated>2011-11-27T01:30:43.011-08:00</updated><title type='text'>VBCorLib for VB6</title><subtitle type='html'>This is a place to learn about what is going on with the  VBCorLib library project. It is under constant advancement and those will be expressed here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13453815.post-7033225568914852866</id><published>2009-04-01T00:31:00.001-07:00</published><updated>2009-04-01T01:01:35.099-07:00</updated><title type='text'>SimplyVBUnit 3.0 Released</title><content type='html'>I've released a new version of &lt;a href="http://sourceforge.net/projects/simplyvbunit/"&gt;SimplyVBUnit&lt;/a&gt; for VB6. Though this is not a VBCorLib specific post, I felt it should be shared anyways.&lt;br /&gt;&lt;br /&gt;After using NUnit for awhile now, I've come to love the constraint based assertion model. It provides a great deal of constraints right out of the box. The constraint based method allows me to create my own constraints if necessary. Then I started using the TestCase attribute (originally RowData) and have enjoyed that ability. So with that I decided to update &lt;a href="http://sourceforge.net/projects/simplyvbunit/"&gt;SimplyVBUnit&lt;/a&gt; to provide as much capabilities with regards to constraints and test case data functions as I could.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/simplyvbunit/"&gt;SimplyVBUnit&lt;/a&gt; provides numerous constraints like NUnit and you can write your own if necessary. The constraints can be changed together providing even greater capabilities than the old method. In the old method there was no built in way to assert that a value was equal to more than one value.&lt;br /&gt;&lt;br /&gt;The old way for asserting against multiple values:&lt;br /&gt;&lt;pre&gt;Assert.IsTrue MyValue = 1 Or MyValue = 2&lt;/pre&gt;&lt;br /&gt;The old method does work for the most part, but it doesn't help you when it fails. All you get is that the assertion was false.&lt;br /&gt;&lt;br /&gt;The new constraint based method:&lt;br /&gt;&lt;pre&gt;Assert.That MyValue, Iz.EqualTo(1).OrElse.EqualTo(2)&lt;/pre&gt;&lt;br /&gt;The new method reads exactly what you want and if there is a failure you're told exactly what was expected. Anyways, this is a very very tiny portion of the power of constraints when using &lt;a href="http://sourceforge.net/projects/simplyvbunit/"&gt;SimplyVBUnit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The test case capabilities can be involved so I won't go into any details here. Since VB6 doesn't support attributes like .Net I made a pretty good alternative. It's still very powerful in providing the ability to pass parameters to test methods.&lt;br /&gt;&lt;br /&gt;So if you unit test in VB6 give &lt;a href="http://sourceforge.net/projects/simplyvbunit/"&gt;SimplyVBUnit&lt;/a&gt; 3.0 a try.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-7033225568914852866?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/7033225568914852866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=7033225568914852866' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/7033225568914852866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/7033225568914852866'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2009/04/simplyvbunit-30-released.html' title='SimplyVBUnit 3.0 Released'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-153017253117516268</id><published>2008-07-07T14:48:00.001-07:00</published><updated>2008-07-07T14:55:56.442-07:00</updated><title type='text'>Classic ASP Helper Project</title><content type='html'>So a few people have been attempting to use VBCorLib from within a classic ASP web page, and can have difficulties achieving success. There is a mismatch when dealing with ASP and VBCorLib, especially when dealing with arrays. In ASP all variables are held in a Variant. Arrays are expected to be a Variant with a subtype of the specific datatype. VBCorLib deals with strictly typed arrays. This presents a problem and can cause much frustration. So I've created a &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;helper dll&lt;/a&gt; that allows for easy conversion of one array type to another. This makes it easy to convert the Byte() VBCorLib returns into a Variant(), or vis-versa when needing to pass a Byte() by reference into a method. Also, there are a few wrapper classes that make things a big smoother when dealing with classes that make heavy use of arrays, such as the cryptography classes.&lt;br /&gt;&lt;br /&gt;So anyways, I hope the &lt;a href="http://sourceforge.net/projects/vbcorlib" tabindex="10" onclick="return false;"&gt;helper &lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;dll&lt;/a&gt; will provides benifit to those still developing in class ASP and would like to include some of the functionality provided by VBCorLib.&lt;br /&gt;&lt;br /&gt;You can download the helper dll from &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;Source Forge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-153017253117516268?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/153017253117516268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=153017253117516268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/153017253117516268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/153017253117516268'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2008/07/asp-helper-project.html' title='Classic ASP Helper Project'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-4349943240791723132</id><published>2008-06-11T01:00:00.000-07:00</published><updated>2008-06-11T01:05:46.643-07:00</updated><title type='text'>Version 2.3 Released</title><content type='html'>Long time no posty! I finally got around to dealing with the DEP problem that VBCorLib would raise on certain systems. I can only hope it is fixed for all systems! I also did some minor updating.&lt;br /&gt;&lt;br /&gt;Someday I'll get time to just dig into the thing again. I'm aching to write and rewrite some better tutorials. I'm not satisfied with the few that exist and some of those are out of date. So we'll see how things go.&lt;br /&gt;&lt;br /&gt;Anyhow, you can grab the newest version from &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;Source Forge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-4349943240791723132?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/4349943240791723132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=4349943240791723132' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/4349943240791723132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/4349943240791723132'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2008/06/version-23-released.html' title='Version 2.3 Released'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-754234542560541004</id><published>2007-10-23T12:37:00.000-07:00</published><updated>2007-10-23T12:49:14.894-07:00</updated><title type='text'>Updating VBCorLib to Version 2.2</title><content type='html'>So I don't get a lot of time to spend with &lt;a href="http://www.kellyethridge.com/vbcorlib"&gt;VBCorLib&lt;/a&gt;, but sometimes I have to make an update available because I feel an issue needs to be resolved. So I've done some work and uploaded the latest to &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;SourceForge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've integrated the &lt;span style="font-weight: bold;"&gt;BigInteger&lt;/span&gt; class with &lt;a href="http://www.kellyethridge.com/vbcorlib"&gt;&lt;span style="font-weight: bold;"&gt;VBCorLib&lt;/span&gt;&lt;/a&gt; to bring all the functionality into a single package. Along the way a few issues were resolved. The &lt;span style="font-weight: bold;"&gt;Queue&lt;/span&gt; class had a sneaky glitch that could cause an application to crash. The &lt;span style="font-weight: bold;"&gt;DSAParameters&lt;/span&gt; class was updated to derive the &lt;span style="font-weight: bold;"&gt;J&lt;/span&gt;  parameter from the &lt;span style="font-weight: bold;"&gt;P&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Q&lt;/span&gt; parameters. This was accomplished using &lt;span style="font-weight: bold;"&gt;BigInteger&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Along with the new uploads on &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;SourceForge&lt;/a&gt; I have included the current set of unit tests. It is a separate download because if its size. But for those interested, it is available. It will require the use of &lt;a href="http://sourceforge.net/projects/simplyvbunit"&gt;SimplyVBUnit&lt;/a&gt; to run those tests.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-754234542560541004?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/754234542560541004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=754234542560541004' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/754234542560541004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/754234542560541004'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2007/10/biginteger-integration.html' title='Updating VBCorLib to Version 2.2'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-4430483749328927343</id><published>2007-06-01T06:09:00.000-07:00</published><updated>2007-06-01T12:16:26.410-07:00</updated><title type='text'>BigInteger Completed!</title><content type='html'>In my quest to write my own version of RSA encryption, I needed to be able to perform mathematical functions with very large integer numbers. I set out to learn these methods, so I popped open my set of The Art of Computer Programming by Donald Knuth. I learned the basics pretty easily, however, the division was another matter. I did eventually figure it out and now find it a straight forward method to implement. Great learning experience for sure. Among other things, I learned that Microsoft's BigInteger in the VS Orcas edition calculated incorrectly.&lt;br /&gt;&lt;br /&gt;Anyways, I enjoyed the process and thought that the BigInteger class itself might be useful outside of VBCorLib, so I built a nice package for it and uploaded it Planet Source Code (soon Sourceforge.) I think I might even expand it to include something like a BigDecimal and/or BigFloat.&lt;br /&gt;&lt;br /&gt;&lt;rant&gt;:rant: I've become increasingly disappointed with the quality of submissions on Planet Source Code. I've looked at many projects and just shake my head. I could complain about every aspect of the majority of projects. I think I must have high expectations and it prevents me from voting or commenting because nothing good will come out of my mouth. :/rant:&lt;/rant&gt;&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-4430483749328927343?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/4430483749328927343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=4430483749328927343' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/4430483749328927343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/4430483749328927343'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2007/06/biginteger-competed.html' title='BigInteger Completed!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-8218700574930642102</id><published>2007-05-04T18:51:00.000-07:00</published><updated>2007-05-04T19:03:28.616-07:00</updated><title type='text'>Back In The Saddle</title><content type='html'>It's been a while and I haven't touched VBCorLib since the v2.1 release, but have been itching to get a couple of things added!&lt;br /&gt;&lt;br /&gt;I've been playing with VB9 (Orcas) and really want the &lt;span style="font-weight: bold;"&gt;BigInteger&lt;/span&gt; added to the library. I've seen attempts of big number handling in VB6, but they use strings and base 10 values. With &lt;span style="font-weight: bold;"&gt;BigInteger&lt;/span&gt; a byte array will be used and allow for hex support for parsing and string output. I'll probably add some Java inspired methods of bit manipulation.&lt;br /&gt;&lt;br /&gt;When &lt;span style="font-weight: bold;"&gt;BigInteger&lt;/span&gt; is completed I can try my hand at creating a VB6 version of the RSA encryption. I'll probably call it &lt;span style="font-weight: bold;"&gt;RSAManaged&lt;/span&gt;. I never liked the restrictiveness of hash algorithm choices that &lt;span style="font-weight: bold;"&gt;RSACryptoServiceProvider&lt;/span&gt; supported. Mono supports basically any hash algorithm derived from &lt;span style="font-weight: bold;"&gt;HashAlgorithm&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;As I keep playing with VB9 I will keep my eye out for other classes that make sense to add to the library. There are a gazillion classes, but I'm keeping the search narrowed to the mscorlib.dll library for now.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-8218700574930642102?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/8218700574930642102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=8218700574930642102' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/8218700574930642102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/8218700574930642102'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2007/05/back-in-saddle.html' title='Back In The Saddle'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-116331528550029484</id><published>2006-11-11T22:57:00.000-08:00</published><updated>2006-11-11T23:08:05.520-08:00</updated><title type='text'>Encryption Made Easy</title><content type='html'>Well, it is a joy to perform encryption in VB6 now. Using encryption classes in VB6 that work the same as the DotNET counterpart makes things much easier.&lt;br /&gt;&lt;br /&gt;I have seen many other VB6 encryption classes, but they seem cumbersome and restrictive. While using their classes, I have to perform the entire encryption operation in one shot. The entire array or a file at once. I can't piece it together. And usually I have to pad my own data. Not to mention that everything else pretty much only supports ECB feedback.&lt;br /&gt;&lt;br /&gt;When using the VBCorLib versions, I can swap out different algorithms without needing to change anything. There are only 4 algorithms built into the library. I'm thinking of implementing a few others, but make them external classes that depend on VBCorLib. Probably Blowfish and a couple others. This would show how to build cipher routines external to the library, yet leverage the full capability of the algorithm by making it work with everything in VBCorLib, especially the CryptoStream class. Hmmmmm I'll have to think about this one...&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-116331528550029484?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/116331528550029484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=116331528550029484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/116331528550029484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/116331528550029484'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/11/encryption-made-easy.html' title='Encryption Made Easy'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-116188939381260247</id><published>2006-10-26T11:58:00.000-07:00</published><updated>2006-10-26T12:03:13.823-07:00</updated><title type='text'>2.0 Released!</title><content type='html'>Well, it's finally out! I made myself quit tinkering with every little thing and publish the new version. It's full of all sorts of new things, I keep forgetting what's in it. The compiled dll may collapse under its own weight. With the new classes and the fact I moved the VBCultures.nlp file into the resource to reduce dependencies, it weighs in at a hefty 4megs. To me that doesn't mean much. I ship much larger distributions, so I'm impressed it's only 4megs! Anyways, I hope everyone enjoys the new cryptography functionality and any new functions I've added but can't remember.&lt;br /&gt;&lt;br /&gt;Thank You,&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-116188939381260247?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/116188939381260247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=116188939381260247' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/116188939381260247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/116188939381260247'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/10/20-released.html' title='2.0 Released!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115981176912470018</id><published>2006-10-02T10:24:00.001-07:00</published><updated>2006-10-02T10:56:09.126-07:00</updated><title type='text'>Wrapping Up 2.0</title><content type='html'>The journey through the cryptography namespace of DotNET was indeed an adventure. Very exciting. I learned a great deal about cryptography, hashes, and digital signatures. I got to implement the Rijndael algorithm. That was a lot of fun. The other algorithms were supplied by crytography service providers.  However, I did get to implement all the managed hashing routines. That was very educational, along with the (Hash) Message Authentication Code classes.&lt;br /&gt;&lt;br /&gt;Many additional utility classes were also included, such at the SecurityElement, which is a simple implementation of managing XML strings. And the StopWatch class was upgraded to match the DotNET implementation, even though it doesn't exist in the core library. I like having a StopWatch class.&lt;br /&gt;&lt;br /&gt;Many array contructors have also been included so arrays of specific datatypes can easily be created. This was to help with being able to create an array inline to be passed into the crypto functions that accepted Byte arrays. It was just easier to create constructors instead of constantly declaring a variable and assigning an array prior to usage.&lt;br /&gt;&lt;br /&gt;I'm currently reworking the VBCorLibTypes typelibrary. Creating an IDL source file, since there never was one because I used Matt Curland's type library editor. Once that is finished, I'll be adding as much support for the unicode versions of the API functions as I can. Specifically for file, registry and INI support, but, I'll include support where it makes sense. The unicode support will only work on NT machines, which I'm pretty sure includes everyone now-a-days.&lt;br /&gt;&lt;br /&gt;There is one place I don't think I'll finish because it may be more trouble than it's really worth, and that is in the DSAParameters class. The "J" parameter is equal to (P - 1) / Q. The parameter is optional. So, I'm not sure I want to delve into dividing 64 byte numbers for such little gain. If I do learn about such large numbers, I might write a BigInteger class. Or if someone with knowledge of such things could point me in the right direction.&lt;br /&gt;&lt;br /&gt;Anyways, things are coming together. I have documentation to write, including a whole set of tutorials for all this wonderful cryptography stuff. It should be fun!&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115981176912470018?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115981176912470018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115981176912470018' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115981176912470018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115981176912470018'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/10/wrapping-up-20_02.html' title='Wrapping Up 2.0'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115742208211501032</id><published>2006-09-04T18:39:00.000-07:00</published><updated>2006-09-04T19:08:02.176-07:00</updated><title type='text'>SHA-1, SHA-256, SHA-384, SHA-512... DONE!</title><content type='html'>Completed, the SHA family of hashes are. They were quite interesting and really not as complicated as I was originally fearing. The single hardest part was dealing with the unsigned addition.&lt;br /&gt;&lt;br /&gt;While implementing SHA-1 I was faced with needing unsigned addition in my signed integer world. I resorted to some assembly just to add two numbers. The rest of the algorithm was pretty straight forward. I was pleased with the coding, then became horrified at the performance. The first implementation was on an order of 10x slower than .NET. I had to think for a minute, then remembered I wasn't utilizing all of VB's compiling powers at all. I hadn't taken advantage of the Integer overflow checks being off. I couldn't use that optimization while working in the IDE, so I left the original version in to keep the proof-of-concept, if you will. To make sure my tests remain accurate, as well.&lt;br /&gt;&lt;br /&gt;For the first time in VBCorLib I had a routine for the IDE and one for compiled runtime environments. Once I fully engaged all the optimization tricks the routine quickened up considerably. At the end I had the SHA-1 routine running only about 50% slower than .NET.&lt;br /&gt;&lt;br /&gt;SHA-256 was basically the same thing as SHA-1. It just needs to work on more data at once. The final result was about 75% slower than .NET. That's pretty good.&lt;br /&gt;&lt;br /&gt;The SHA-512 implementation had me for a bit. I needed to perform 64-bit addition. I tried using Currency along with some assembly. I could still do all the bitwise operations in VB. I did some testing for the speed of using Currency in bitwise intensive situations. Umm, not really the best solution. I then decided to maintain individual Hi and Lo 32-bit segments of each variable. All I had to do was double all the variables! Ok, so using that technique and some assembly for adding, I got an implementation working. Fired up a quick speed test and there it was... 4 seconds to hash 10megs. It took .NET 460ms. I hadn't done the native implementation because of the 64-bit math, shifting and rotating. I decided to do it anyways for as much as I could. I even figured out how to add 64-bits and detect the overflow of the lower 32-bits so I didn't need any assembly. I unrolled all the functions and put the raw code right into the core loops. Lots of duplication for handling 64-bit shifting, 64-bit rotating, and 64-bit addition. In the end it was all worth it. That same speed test decreased to 560ms. 80% the speed of .NET's native 64-bit handling. Pretty good day!&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115742208211501032?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115742208211501032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115742208211501032' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115742208211501032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115742208211501032'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/09/sha-1-sha-256-sha-384-sha-512-done.html' title='SHA-1, SHA-256, SHA-384, SHA-512... DONE!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115673672778229605</id><published>2006-08-27T20:28:00.000-07:00</published><updated>2006-08-27T20:48:14.986-07:00</updated><title type='text'>First Hash Algorithm</title><content type='html'>Well after finishing all of the symmetrical cipher algorithms I decided to begin the journey into the hash algorithms. My first stop was the SHA-1 (Secure Hash Algorithm). The first class representation was the &lt;span style="font-weight: bold;"&gt;SHACryptoServiceProvider&lt;/span&gt; class which is just a wrapper around the &lt;span style="font-weight: bold;"&gt;CryptoAPI&lt;/span&gt; calls that support the hashing within Windows.&lt;br /&gt;&lt;br /&gt;I began my journey by learning how the &lt;span style="font-weight: bold;"&gt;CryptoAPI&lt;/span&gt; worked when hashing data. After a bit of digging in the MSDN I found what I was looking for and a short time later I was succeeding with generating SHA-1 hashes. Once I was comfortable with that, it  was a fairly easy class to implement. I used .NET to generate a series of plain text and hashed values that I would test the class with. It went pretty smoothly. Then I noticed there was the &lt;span style="font-weight: bold;"&gt;SHAManaged&lt;/span&gt; class.&lt;br /&gt;&lt;br /&gt;I realized that I was going to need to actually implement the SHA-1 algorithm, so I went searching for the rfc and sure enough there it was; RFC 3174. After reading through the workings a couple of times I noticed it came with an implementation in C. I studied the code for a bit and decided it shouldn't be an overwhelming implementation.&lt;br /&gt;&lt;br /&gt;I coded up the implementation in VB, checking the example and re-reading the RFC. I ran it against one test, a 1-byte array with the value zero. Overflow! Uhhhh... well after going around I realized that the example used unsigned integers. Now I'm not the smartest guy, but I'm pretty sure VB6 doesn't have those. I needed to do unsigned addition. It's very complicated when you try to fake it in VB6, so I resorted to some ASM from Matt Curland and expanded the Helper class to do the unsigned addition. Once I got all that working and the Endian swapping correct, it worked like a charm.&lt;br /&gt;&lt;br /&gt;The SHA-1 algorithm is pretty straigh forward, though I'm pretty sure the remaining algorithms will be reminding how easy I had it this time.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115673672778229605?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115673672778229605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115673672778229605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115673672778229605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115673672778229605'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/08/first-hash-algorithm.html' title='First Hash Algorithm'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115563080438451324</id><published>2006-08-15T01:22:00.000-07:00</published><updated>2006-08-15T01:33:24.396-07:00</updated><title type='text'>Rijndael Speed Update</title><content type='html'>After digging deep into optimizing the Rijndael implementation, I succeeded in equaling the speed of .NET in some configurations and running a close 2nd in the others.&lt;br /&gt;&lt;br /&gt;The original test configuration was using a 3meg file and the ECB cipher mode, which is basically a raw encryption on the individual blocks. Original scores were .NET @ 147ms and VBCorLib @ 302ms. After the massive optimizations, I brought VBCorLib to 172ms. That is a tremendous increase in performance.&lt;br /&gt;&lt;br /&gt;I further tried an optimized 256bit block size version. The results were .NET @ 183ms and VBCorLib @ 183ms. A dead heat. Even using the heaviest cipher mode of CFB, VBCorLib is only 50ms behind on a 3meg file at 435ms to 385ms for .NET.&lt;br /&gt;&lt;br /&gt;So with enough tweaking, I got more than what I was originally asking for. VB6 seems to still have some kick left.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115563080438451324?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115563080438451324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115563080438451324' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115563080438451324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115563080438451324'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/08/rijndael-speed-update.html' title='Rijndael Speed Update'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115557941096352505</id><published>2006-08-14T10:53:00.000-07:00</published><updated>2006-08-14T11:16:51.050-07:00</updated><title type='text'>Rijndael</title><content type='html'>Well, I've finished implementing all of the Rijndael classes. It was quite a learning process. Ok, I'm not completely done. All of the classes are implemented, but I did a couple a tests and figured out how to optimize it by 30%.&lt;br /&gt;&lt;br /&gt;I got the code all the way down to a single shared cipher routine among all block sizes and table look ups. It's a very small and elegant routine, but requires more array accesses than a flattened special version for each blocksize and cipher direction. Unfortunately this massive decrease in code size increased the time tests by 50%.&lt;br /&gt;&lt;br /&gt;I'm going to flatten out all of the combinations to remove roughly 1/3 of all array access calls. My tests show an encryption using 128bit blocks and keys with a cipher mode of ECB takes twice as long as the .NET version. Now I know twice the time isn't the greatest, but in VB terms I believe it's excellent compared to .NET.  It all comes down to the lack of direct memory manipulation in VB.&lt;br /&gt;&lt;br /&gt;On my machine (2.0 ghz Dothan) a 3 meg array took .NET 147ms and VBCorLib took 302ms. This was using the 128bit block and key size in ECB mode.&lt;br /&gt;&lt;br /&gt;So the end is wrapping up for the symmetric ciphers and I should be heading towards the hashes next. That will be an all new adventure!&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115557941096352505?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115557941096352505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115557941096352505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115557941096352505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115557941096352505'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/08/rijndael.html' title='Rijndael'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115446207630588508</id><published>2006-08-01T12:44:00.000-07:00</published><updated>2006-08-01T12:54:36.333-07:00</updated><title type='text'>Cryptography</title><content type='html'>Cryptography is a very interesting study at the least. I've managed to learn the   &lt;span style="font-weight: bold;"&gt;CryptoAPI&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;functions to implement the&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;DES&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;TripleDES&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;RC2&lt;/span&gt; cryptographic methods. Now I've been messing around with the &lt;span style="font-weight: bold;"&gt;Rijndael&lt;/span&gt; algorithm. It's based on the &lt;span style="font-weight: bold;"&gt;AES&lt;/span&gt; cipher, but allows for larger blocks to be handled. I haven't started to learn about the hash functions. I'm sure they will be another adventure.&lt;br /&gt;&lt;br /&gt;Otherwise, things are coming along fine. The tests for these routines are quite long as I read in a file with all the required information to perform encryption/decryption. I do many combinations for the parameters making for large amounts of test data. But, I think it's important that these routines are solid on the first try.&lt;br /&gt;&lt;br /&gt;Also, I'm seriously considering breaking binary compatibility. There are some updates that are needling me. I'm thinking that since the source code is downloaded the most then everyone is probably compiling it themselves, meaning there is no binary compatibility anyways. So I'm really thinking about cleaning things up and updating some interfaces. Well see how it goes.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115446207630588508?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115446207630588508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115446207630588508' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115446207630588508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115446207630588508'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/08/cryptography.html' title='Cryptography'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-115255230693985728</id><published>2006-07-10T10:10:00.000-07:00</published><updated>2006-07-10T10:28:08.343-07:00</updated><title type='text'>Been Awhile</title><content type='html'>I thought it had been long enough since the last entry. For awhile I was very busy which left me little time to work on the library.&lt;br /&gt;&lt;br /&gt;Someone asked if &lt;span style="font-weight: bold;"&gt;VBCorLib&lt;/span&gt; supported any kind of encryption like the &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt; counterpart. I had to reluctantly say no it doesn't. At that point I felt there was a big piece missing. Something that many people use.&lt;br /&gt;&lt;br /&gt;I had been very busy so I couldn't do much with the library, however, things have slowed down a little bit. And through that crack of free time I've been studying the &lt;span style="font-weight: bold;"&gt;System.Security.Cryptography&lt;/span&gt; namespace. Cryptography is not my area of knowledge, so I've been having to study the &lt;span style="font-weight: bold;"&gt;CryptoAPI&lt;/span&gt; functions in windows and have knocked out a few of the classes to see how things can come together with such a large namespace. Eventually I will need to implement ciphers and hashes that aren't supported by the Windows API. But I want to have a solid foundation first.&lt;br /&gt;&lt;br /&gt;The way &lt;span style="font-weight: bold;"&gt;.NET&lt;/span&gt; exposes cryptography is a bit different than normal in the sense that you can ultimately use a &lt;span style="font-weight: bold;"&gt;CryptoStream&lt;/span&gt; object to read or write data that gets encrypted/decrypted on the fly. My only experience in VB classes with ciphers is that I had to pass in all the data at once. Now I can write data in small chunks just like I would to a file. And the really cool thing about the &lt;span style="font-weight: bold;"&gt;CryptoStream&lt;/span&gt; class is that it reads or writes from an underlying stream, including another &lt;span style="font-weight: bold;"&gt;CryptoStream&lt;/span&gt; object. So you can use multiple ciphers simultaneously.&lt;br /&gt;&lt;br /&gt;Well, it's a big set of very powerful classes, so like I said, I've been studying up on them to see how things work together. It can be pretty complicated at times. But, I'm sure it will be a useful set of classes.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-115255230693985728?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/115255230693985728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=115255230693985728' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115255230693985728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/115255230693985728'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/07/been-awhile.html' title='Been Awhile'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-114305917997356745</id><published>2006-03-22T12:02:00.000-08:00</published><updated>2006-03-22T12:29:18.856-08:00</updated><title type='text'>Byte Arrays to MemoryStream</title><content type='html'>Ok, Byte arrays have been used in VB for a very long time. My coworkers use them the same way over and over again. They want to keep appending more bytes to the array, so they manually resize the array as more capacity is needed. Atleast they do that much, instead of allocating some massive amount initially and only use 10% of it.&lt;br /&gt;&lt;br /&gt;I see this kind of stuff all over the place. I see it repeated in code in everyone's projects. I see it in questions people post asking how to extend the array as they need to... Everyone gives the same answer... Redim Preserve.&lt;br /&gt;&lt;br /&gt;I have yet to see anyone suggest creating a dynamic byte list.... you know, something that will increase capacity as needed, then let you retrieve the final result. Something that can be reused time and time again without having to ever worry about handling a dynamic byte array.... Something like a &lt;span style="font-weight: bold;"&gt;MemoryStream&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;From what I can tell, most people are more concerned with execution speed than a good design, code reuse, and maintainability.&lt;br /&gt;&lt;br /&gt;I've asked my coworkers where they think my code or their code is slow. They have no answer. They feel that if they can't see all the code in front of them all at once, then it must be running 1000 times slower. They have no confidence in the hidden code, no trust of what they have written before. It seems the older the code is, the less it is trusted. I wrote the &lt;span style="font-weight: bold;"&gt;MemoryStream&lt;/span&gt; class at the beginning of the &lt;span style="font-weight: bold;"&gt;VBCorLib&lt;/span&gt; project and I still trust it. I wonder how many others don't trust their own code.&lt;br /&gt;&lt;br /&gt;I use the &lt;span style="font-weight: bold;"&gt;MemoryStream&lt;/span&gt; all the time. It saves me lots of time and I trust it. Yes I wrote it, but atleast I know to trust my own code. I use byte arrays in times when they are required, such as with data transfer on serial ports or sockets. But, unless I'm doing something CPU intensive, I will choose the &lt;span style="font-weight: bold;"&gt;MemoryStream&lt;/span&gt; to make things simple.&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-114305917997356745?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/114305917997356745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=114305917997356745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/114305917997356745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/114305917997356745'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2006/03/byte-arrays-to-memorystream.html' title='Byte Arrays to MemoryStream'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113521842957723459</id><published>2005-12-21T18:10:00.000-08:00</published><updated>2005-12-21T18:27:09.596-08:00</updated><title type='text'>My Favorite String Function...</title><content type='html'>So there I am typing away on a string literal. I have to include variable values within the string, so I unquote, hit ampersand, variable name, ampersand, and requote to continue with the string literal. Many times I'll need to format the variable value, too. And I have to do this for every variable I need. And if I use the same variable more than once, I have to type it more than once.&lt;br /&gt;&lt;br /&gt;So what do I do now? I have become reliant on &lt;span style="font-weight: bold;"&gt;cString.Format&lt;/span&gt; to create the complex strings I need. Since &lt;span style="font-weight: bold;"&gt;cString&lt;/span&gt; is already publicly available, it's a simple process to insert values, formatted or not, duplicated or not without the quoting jargon.&lt;br /&gt;&lt;br /&gt;I write error messages for my exceptions all the time. Usually I'll include a valid value or value range in the message. Now I automatically start string building with &lt;span style="font-weight: bold;"&gt;cString.Format&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Here is a typical exception message:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;cString.Format("Valid values are from {0} to {1:n0}.", 1, 999999)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;/span&gt;&lt;span style="font-family: lucida grande;"&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;This outputs the following:&lt;br /&gt;Valid values are from 1 to 999,999.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;cString.Format&lt;/span&gt; function uses an already declared &lt;span style="font-weight: bold;"&gt;StringBuilder&lt;/span&gt; and simply calls the &lt;span style="font-weight: bold;"&gt;AppendFormat&lt;/span&gt; function. The &lt;span style="font-weight: bold;"&gt;StringBuilder&lt;/span&gt; is cleared before each call.&lt;br /&gt;&lt;br /&gt;So this provides me with a very quick, painless, and easy way to create my formatted strings. I don't think I could go back to the old way.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113521842957723459?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113521842957723459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113521842957723459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113521842957723459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113521842957723459'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/12/my-favorite-string-function.html' title='My Favorite String Function...'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113384731047654978</id><published>2005-12-05T21:32:00.000-08:00</published><updated>2005-12-05T21:35:10.606-08:00</updated><title type='text'>Supporting Asynchronous FileStream Class</title><content type='html'>Well dang, the current constructor &lt;span style="font-weight: bold;"&gt;NewFileStream()&lt;/span&gt; doesn't include the  &lt;span style="font-style: italic;"&gt;useAsync&lt;/span&gt; optional argument with the intent to implement it later. So now I have a dilema. I have 3 options:&lt;br /&gt;&lt;br /&gt;1. Break Binary Compatibility to include the new argument.&lt;br /&gt;2. Add a second constructor &lt;span style="font-weight: bold;"&gt;NewFileStreamAsync&lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;&lt;/span&gt;, keeping Binary Compatibility.&lt;br /&gt;3. Don't add asynchronous I/O capabilities to the FileStream class.&lt;br /&gt;&lt;br /&gt;So now I'll be thinking about it....&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113384731047654978?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113384731047654978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113384731047654978' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113384731047654978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113384731047654978'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/12/supporting-asynchronous-filestream.html' title='Supporting Asynchronous FileStream Class'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113366339369110943</id><published>2005-12-03T18:22:00.000-08:00</published><updated>2005-12-03T18:32:08.110-08:00</updated><title type='text'>What's Next?</title><content type='html'>What's on the horizon with VBCorLib? The DLL itself will probably not be expanded any further. After I finish up a couple things with it, I'll begin researching the capabilities of the System.dll from .NET and see what can be reproduced in VB6. The VBSystem.dll will be the first DLL built using VBCorLib on the way to expand the VB.EXT framework.  It will be an exciting time as I will be able to focus on other systems instead of lower-level code.&lt;br /&gt;&lt;br /&gt;As for what I have to finish up on VBCorLib. Well, the FileStream class isn't quite right, so I must fix that. It shouldn't be anything critical for anyone. I then want to support asychronous file IO in the FileStream class. That's really about all that's left. It is possible that VBCorLib will be expanded as new parts of the framework emerge requiring increase support from the core library.&lt;br /&gt;&lt;br /&gt;So, in the near future I should be starting work on VBSystem.dll, the 2nd dll of the VB.EXT framework.&lt;br /&gt;&lt;br /&gt;And ideas are always welcome. I can't say if they will make it into the VBSystem.dll, as I'll be trying to keep it with the same context as the .NET version. There may be another dll in which a suggestion would fit and be implemented at a later date.&lt;br /&gt;&lt;br /&gt;Off I go!&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113366339369110943?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113366339369110943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113366339369110943' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113366339369110943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113366339369110943'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/12/whats-next.html' title='What&apos;s Next?'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113261071062753803</id><published>2005-11-21T13:41:00.000-08:00</published><updated>2005-11-21T14:10:47.450-08:00</updated><title type='text'>Is It An Object?</title><content type='html'>Sometimes I keep all kinds of values in a Collection, Hashtable, ArrayList, you get the idea. When I go to access the value I may not know if that particular item is an object or a value type. I mean, I need to use Set if it's an object. This comes up when I might have created a wrapper collection and need to be able to return the inner collection item. Some how I need to be able to test the return value type for the inner collection to properly return the value from my wrapper collection.&lt;br /&gt;&lt;br /&gt;VBCorLib provides a couple of easy ways to assign a value to a Variant datatype without knowing the datatype.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CopyVariant&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;MoveVariant&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;These both do what they say. &lt;span style="font-weight: bold;"&gt;CopyVariant&lt;/span&gt; makes a copy, leaving the original value in the original variable. Any datatype can be copied into a variant without knowledge of the type being copied. This means you do not have to check if the value is an object. The Set method is not needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MoveVariant&lt;/span&gt;, however, actually moves the bytes from the original variable to the destination variable. This prevents all the overhead required to make a copy of a value if you don't need the original variable to have the value anymore. As stated, since all 16 bytes are moved, then the source variable needs to be of type Variant as well. This also means that the subtype of the original Variant does not need to be known since this is a direct memory copy, eliminating the need to worry about using Set.&lt;br /&gt;&lt;br /&gt;These functions are globally available, so they can be called directly in code without having to instantiate anything.&lt;br /&gt;&lt;br /&gt;So if a value is being returned through a Variant datatype from a collection, the following call can be used:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;Public Property Get Value(ByVal Index As Long) As Variant&lt;br /&gt;MoveVariant Value, mList(Index)&lt;br /&gt;End Property&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Sometimes I want to use the value locally, but need to do something different if the value is an object. I could get the value from the collection twice, first testing if it is an object, but this is added overhead. You just want the value, then test if it is an object.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;Private Sub SomeMethod()&lt;br /&gt; Dim v As Variant&lt;br /&gt; MoveVariant v, mItems(mIndex)&lt;br /&gt; If IsObject(v) Then&lt;br /&gt;     ' Do object stuff&lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;This simply allows you to get the value once and procede without requerying the collection.&lt;br /&gt;&lt;br /&gt;This is one of the little ways that VBCorLib makes things easier for me when programming in VB6.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113261071062753803?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113261071062753803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113261071062753803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113261071062753803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113261071062753803'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/11/is-it-object.html' title='Is It An Object?'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113080130533304261</id><published>2005-10-31T15:15:00.000-08:00</published><updated>2005-10-31T15:28:25.366-08:00</updated><title type='text'>My Current Favorite Class... ArrayList</title><content type='html'>When ever I start a new project I select the custom Library project with a reference to VBCorLib already selected. I don't even give it a second thought. I just expect the functionality to be there. So with all of that functionality available to me what do I usually use first?&lt;br /&gt;&lt;br /&gt;Well, when creating a class that contains items I reach for the &lt;b&gt;ArrayList&lt;/b&gt; first. Why? I know I could use the Collection class or an array. Do I just feel safer with an &lt;b&gt;ArrayList&lt;/b&gt;? Maybe it's because I know how it works and it's about as effecient as can be with indexed lookups? Or maybe it's because it has all sorts of list manipulation capabilities that I feel like I won't have to change the type of collection or add additional functionality to manage a different collection type later on in the coding process.&lt;br /&gt;&lt;br /&gt;In my current project I store objects. It's easy enough to store them in any type of container, but I needed one functionality and didn't want to have to code too much. I needed to be able to sort the objects in the list. Immediately the Collection class is out. Oh sure you could sort it using the hardest method possible. I could easily sort an array of objects using VBCorLib. But, when it comes down to it, I don't like having to manage an array directly. So, unless there is a pressing reason for the quickest access to the objects in a list, I choose an &lt;b&gt;ArrayList&lt;/b&gt; and provide a custom &lt;b&gt;IComparer&lt;/b&gt; object when sorting the items. What could be easier?&lt;br /&gt;&lt;br /&gt;I use other classes in VBCorLib, but my first class is usually the &lt;b&gt;ArrayList&lt;/b&gt; allowing for easy manipulation of list data.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113080130533304261?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113080130533304261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113080130533304261' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113080130533304261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113080130533304261'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/10/my-current-favorite-class-arraylist.html' title='My Current Favorite Class... ArrayList'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-113078128797656577</id><published>2005-10-31T09:47:00.000-08:00</published><updated>2005-10-31T09:54:47.986-08:00</updated><title type='text'>A RoadMap?</title><content type='html'>Well, I've been asked about a roadmap for VBCorLib. To be honest I haven't given it much thought. I pretty much just used the .NET mscorlib as a guide for what to implement in my library and stopped there.&lt;br /&gt;&lt;br /&gt;The library itself compiles to about 2.5 megs. I am hesitant to expand on the library's functionality to keep the size down. If I were to start adding functionality I would most likely start another library that depends on VBCorLib. But as it stands I really don't have any plans in the works. &lt;br /&gt;&lt;br /&gt;I've been quite busy with work related projects. I do use VBCorLib in those projects and have become quite dependant upon it.&lt;br /&gt;&lt;br /&gt;So in order for either VBCorLib to be expanded or a new library to emerge then I would need both time and a direction, and at the moment I have neither. Of course everyone is welcome to send me suggested functionality just incase a new library is started.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-113078128797656577?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/113078128797656577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=113078128797656577' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113078128797656577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/113078128797656577'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/10/roadmap.html' title='A RoadMap?'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112809988651567126</id><published>2005-09-30T09:58:00.000-07:00</published><updated>2005-09-30T10:04:46.516-07:00</updated><title type='text'>RegistryKey Crashes?</title><content type='html'>Hello,&lt;br /&gt;&lt;br /&gt;Some of you may experience a crash if using the RegistryKey class to open a key that does not exist. I believe I have fixed problem, but am waiting for confirmation from the original person experiencing the trouble. &lt;br /&gt;&lt;br /&gt;I am providing a link directly to the updated DLL (version 1.5.4) for those experiencing the crash. If this does resolve the conflict please let me know.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kellyethridge.com/vbcorlib/VBCorLib.dll"&gt;VBCorLib v1.5.4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just replace the currently installed VBCorLib.dll found in the Windows folder.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112809988651567126?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112809988651567126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112809988651567126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112809988651567126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112809988651567126'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/09/registrykey-crashes.html' title='RegistryKey Crashes?'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112477176456487037</id><published>2005-08-22T21:35:00.000-07:00</published><updated>2005-08-22T21:38:22.883-07:00</updated><title type='text'>Version 1.5.3 Release!</title><content type='html'>Ok, this release is because I was plain stupid. I broke the cArray sort routines to no longer work with non-zero based arrays when sorting. This has been fixed.&lt;br /&gt;&lt;br /&gt;So I've had to update the release and it is available at &lt;a href="http://sourceforge.net/projects/vbcorlib/"&gt;Source Forge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112477176456487037?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112477176456487037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112477176456487037' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112477176456487037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112477176456487037'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/08/version-153-release.html' title='Version 1.5.3 Release!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112287895869703371</id><published>2005-07-31T23:47:00.000-07:00</published><updated>2005-07-31T23:49:18.703-07:00</updated><title type='text'>Version 1.5.2 Final Release???</title><content type='html'>Ok, I have found 1 final bug. The Environment.UserName returns an extra character. So I've had to update the release and it is available at &lt;a href="http://sourceforge.net/projects/vbcorlib/"&gt;Source Forge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No new functionality has been added, simply a minor fix.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112287895869703371?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112287895869703371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112287895869703371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112287895869703371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112287895869703371'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/version-152-final-release.html' title='Version 1.5.2 Final Release???'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112243717014019031</id><published>2005-07-26T21:04:00.000-07:00</published><updated>2005-07-26T21:06:10.146-07:00</updated><title type='text'>Version 1.5.1  A Small Release</title><content type='html'>Version 1.5.1 has been posted on &lt;a href="http://sourceforge.net/projects/vbcorlib/"&gt;Source Forge&lt;/a&gt;.  This release fixes 3 minor problems that most likely won't cause any problems if you are just using version 1.5. But, I like to post updates.&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112243717014019031?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112243717014019031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112243717014019031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112243717014019031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112243717014019031'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/version-151-small-release.html' title='Version 1.5.1  A Small Release'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112189824713422098</id><published>2005-07-20T15:22:00.000-07:00</published><updated>2005-07-20T15:24:07.140-07:00</updated><title type='text'>Version 1.5 Finally!</title><content type='html'>Ok, I have finally release version 1.5, that is all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok ok, this is another massive release. There are lots of new classes, especially in the resources department. There are a few other classes aswell. Some classes have been upgraded and fixed.&lt;br /&gt;&lt;br /&gt;I've even included example projects that demonstrate various aspects of the library! Check 'em out!&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112189824713422098?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112189824713422098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112189824713422098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112189824713422098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112189824713422098'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/version-15-finally.html' title='Version 1.5 Finally!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112166646392321098</id><published>2005-07-17T22:53:00.000-07:00</published><updated>2005-07-17T23:01:03.926-07:00</updated><title type='text'>All About the Resources</title><content type='html'>Ok, I've got .RES files being read and written. The default support is for String, Icon, IconGroup, Cursor, CursorGroup, Bitmap and Byte arrays. The readers and writers accept custom decoders and encoders to easily extend the RES data supported.&lt;br /&gt;&lt;br /&gt;Also, reading from EXE, DLL, and OCX's resources has been updated to work like reading a .RES file.&lt;br /&gt;&lt;br /&gt;I've been investigating writing resources back into executable files and it seems that it could be quite easy to screw things up, so I'm not convinced I should include the ability to write to those types of files.&lt;br /&gt;&lt;br /&gt;-Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112166646392321098?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112166646392321098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112166646392321098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112166646392321098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112166646392321098'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/all-about-resources.html' title='All About the Resources'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112112970742848155</id><published>2005-07-11T17:49:00.000-07:00</published><updated>2005-07-11T17:55:07.433-07:00</updated><title type='text'>Just When I Though It Was Over</title><content type='html'>Ok, I haven't released anything yet. I have figured out how to create the .RES files now, so I have been rebuilding the Resource area from the ground up. It now supports the ability to be extended to allow for new resource types to be decoded from the .RES file without the need for updating VBCorLib. On the same token, encoding will work the same way.&lt;br /&gt;&lt;br /&gt;Classes can implement the IResourceDecoder or IResourceEncoder to read and write to a .RES file. Right now there are decoders for bitmap, icons, cursors, group icons, group cursors and string tables. I will write encoders for those types and that should be enough to cover 99% of everything. For resources that aren't supported, they are still read and written as byte arrays.&lt;br /&gt;&lt;br /&gt;The enumeration is robust in that each resource now has a unique key, and each string in a string table is returned individually.&lt;br /&gt;&lt;br /&gt;I'll implement the same functionality when dealing with resources in executable files also. Reading is supported on all systems, but writing seems to be supported on only NT machines.&lt;br /&gt;&lt;br /&gt;Off I go..&lt;br /&gt;&lt;br /&gt;Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112112970742848155?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112112970742848155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112112970742848155' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112112970742848155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112112970742848155'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/just-when-i-though-it-was-over.html' title='Just When I Though It Was Over'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-112078931181155750</id><published>2005-07-07T19:20:00.000-07:00</published><updated>2005-07-07T19:21:51.813-07:00</updated><title type='text'>Close To Release</title><content type='html'>Ok, version 1.5 is basically ready. I'm just checking things over. There are about 10 examples demonstrating various functionalities within VBCorLib. The examples are far from exhaustive in showing all the capabilities of the library, but it will help get an idea on how to utilize VBCorLib.&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-112078931181155750?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/112078931181155750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=112078931181155750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112078931181155750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/112078931181155750'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/07/close-to-release.html' title='Close To Release'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111993838403699605</id><published>2005-06-27T22:50:00.000-07:00</published><updated>2005-06-27T22:59:44.040-07:00</updated><title type='text'>Stabilized...</title><content type='html'>Ok, I admit that Version 1.0 was not completely stable in some areas and even some functions failed. Even with a 1000+ tests, I can still miss stuff.&lt;br /&gt;&lt;br /&gt;I improved many things in Version 1.2.2, and now I'm at Version 1.5. Many things have been fixed and improved again. A much more coherent set of interfaces have been implemented and some unstable portions of code have been fixed.&lt;br /&gt;&lt;br /&gt;The WeakReference has been fixed and now works fine in the IDE and compiled dll. I use it extensively in the exception classes.&lt;br /&gt;&lt;br /&gt;I created an ExceptionBase class that maintains a weak reference to the parent exception class. It provides services to easily implement exception classes, including holding any values needed and is persistable.&lt;br /&gt;&lt;br /&gt;Much refactoring has happened which actually shrank the size of the dll. Not by much, but it was something.&lt;br /&gt;&lt;br /&gt;I don't think I will be adding anything, really. I'm pretty sure this is the end at 1.5. I'll prepare it for release as soon as I can.&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111993838403699605?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111993838403699605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111993838403699605' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111993838403699605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111993838403699605'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/stabilized.html' title='Stabilized...'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111963039879122833</id><published>2005-06-24T09:20:00.000-07:00</published><updated>2005-06-24T09:27:43.046-07:00</updated><title type='text'>I Hate It When...</title><content type='html'>I hate it when someone accuses me of just "ripping" or "stealing" the code right from the mscorlib.dll library using something like Reflector or the SSCLI. I have had to deal with several people like this and when I ask them to provide examples of the ripped code they seem to disappear.&lt;br /&gt;&lt;br /&gt;Now someone one Planet Source Code has accused me of the same thing with the same claims. I've asked him for examples and told him about the ECMA-335 standard, ISO standard, and reminded him about the MSDN. I then pointed him to the Mono Project and DotGNU Protable .NET project. We'll see what he comes up with.&lt;br /&gt;&lt;br /&gt;Oh, and new HD, everything is saved, hurray!&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111963039879122833?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111963039879122833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111963039879122833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111963039879122833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111963039879122833'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/i-hate-it-when.html' title='I Hate It When...'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111946863263690664</id><published>2005-06-22T12:14:00.000-07:00</published><updated>2005-06-22T12:33:44.280-07:00</updated><title type='text'>Bad Day - But Getting Better</title><content type='html'>Lots going on...&lt;br /&gt;&lt;br /&gt;Of course it would happen while I'm hammering out code. My laptop drive decided it was going to have a heat releated problem. I spent an evening (until 6am) diagnosing the problem. Nothing like getting core dumps in the middle of work. I couldn't believe it, the harddrive actually would fail after running for a few minute. I varified the harddrive was the culprit by replacing it with a cheap-o drive. Everything worked perfectly.&lt;br /&gt;&lt;br /&gt;So now I've been salvaging the files in small chunks between cooldown periods for the drive. So I've had an adventure. New drive ordered!&lt;br /&gt;&lt;br /&gt;So anyways, VBCorLib has had some major changes that will make it incompatible with the currently available version. The single most impactful change is the interface name of &lt;span style="font-weight: bold;"&gt;cObject&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;IObject&lt;/span&gt;. Some function signatures have been extended to give more benifit. Internally, the error handling has been updated to be more robust, especially with optional arguments. Most of the optional arguments have been converted to a Variant to help with the robustness.&lt;br /&gt;&lt;br /&gt;I've added some functions to classes, such as an &lt;span style="font-weight: bold;"&gt;AppendQuick&lt;/span&gt; function for the &lt;span style="font-weight: bold;"&gt;StringBuilder&lt;/span&gt; that is optimized for pure speed. Also, a &lt;span style="font-weight: bold;"&gt;NewArray&lt;/span&gt; function was added to the public functions so the &lt;span style="font-weight: bold;"&gt;cArray&lt;/span&gt; object does not need to be referenced.&lt;br /&gt;&lt;br /&gt;I'm looking into how to create a resource writer for the .RES files. And I'm considering adding multi-threading into the mix. Documentation is being updated aswell.&lt;br /&gt;&lt;br /&gt;So, there are lots of changes that are being made. This is basically the final stages of the library. This will probably be released as a version 1.5, since so many things will have changed.&lt;br /&gt;&lt;br /&gt;Working hard,&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111946863263690664?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111946863263690664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111946863263690664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111946863263690664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111946863263690664'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/bad-day-but-getting-better.html' title='Bad Day - But Getting Better'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111893903953863756</id><published>2005-06-16T09:17:00.000-07:00</published><updated>2005-06-16T09:23:59.543-07:00</updated><title type='text'>Registry and Console</title><content type='html'>Ok, the RegistryKey was not capable of getting or setting values as an empty byte array  or string array. This has been corrected and will be available in version 1.3. Additional functions have been added to the Registry and RegistryKey classes to aide with default values and getting registry keys by string name.&lt;br /&gt;&lt;br /&gt;The console has been improved as well to make it easier to manage the screen buffer, once again this will all be available in the next release.&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111893903953863756?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111893903953863756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111893903953863756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111893903953863756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111893903953863756'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/registry-and-console.html' title='Registry and Console'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111880014181864864</id><published>2005-06-14T18:43:00.000-07:00</published><updated>2005-06-14T18:49:01.823-07:00</updated><title type='text'>Today on PSC</title><content type='html'>Well, its' official. VBCorLib has won 2nd place for Code-Of-The-Month for the month of May on Planet Source Code. Oh joy!&lt;br /&gt;&lt;br /&gt;Moving on... I found 2 bugs that will cause funny formatted numbers when using the NumberFormatInfo class. They have been fixed and will be included in the final version. Version 1.3 will be the final version, unless more bugs are found, though I can't forsee it (lol).&lt;br /&gt;&lt;br /&gt;With the addition of the INIFile, INISectionWriter, and cTimer classes, I feel VBCorLib is ready for anything. The cTimer class has been improved to allow callbacks using AddressOf as well as events. This allows for the timer class to be used in modules without the WithEvents keyword. I always hated having to declare those variables only in a class.&lt;br /&gt;&lt;br /&gt;So, I'm working on some examples now. Once I've covered a good portion of the library classes, I will release it all at once. Everything is looking good now...&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111880014181864864?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111880014181864864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111880014181864864' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111880014181864864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111880014181864864'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/today-on-psc.html' title='Today on PSC'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111869169019040871</id><published>2005-06-13T12:40:00.000-07:00</published><updated>2005-06-13T12:41:30.193-07:00</updated><title type='text'>Finale Plus One</title><content type='html'>Ok ok, I've broken down and added one last class that I think is handy. I've added a timer class (cTimer) to make things easier for re-occuring events.&lt;br /&gt;&lt;br /&gt;But that's it!&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111869169019040871?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111869169019040871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111869169019040871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111869169019040871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111869169019040871'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/finale-plus-one.html' title='Finale Plus One'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111868622216085553</id><published>2005-06-13T11:07:00.000-07:00</published><updated>2005-06-13T11:11:10.556-07:00</updated><title type='text'>The Finale Begins</title><content type='html'>Ok, so now I've included INI file support. I'm thinking that will be the end of VBCorLib. No more additions. Only fixes if they actually exist. Speaking of which, I found a huge problem with all of the Encodings. You can't encode an empty string and you can't decode a zero-length byte array. Both of those problems have been solved.&lt;br /&gt;&lt;br /&gt;So now I'm working on a ton of examples to include with the library to show many of the aspects of the classes and how they work. Once I feel I have enough examples, then I'll release the entire group to the public. The only possible reasons to create new releases is for bux fixes, but I don't think there will be any more.&lt;br /&gt;&lt;br /&gt;Ok, back to work&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111868622216085553?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111868622216085553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111868622216085553' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111868622216085553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111868622216085553'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/finale-begins.html' title='The Finale Begins'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111853570188167455</id><published>2005-06-11T17:15:00.000-07:00</published><updated>2005-06-11T17:21:41.883-07:00</updated><title type='text'>It Has Begun</title><content type='html'>As much as I'd like to keep my hands of the library, it is difficult not to want to add more functionality. Has anyone noticed there is no INI file support? Amazing! And no one even brought it up. So now I've been learning all about them. I've never used them personally for anything, only heard everyone else using them.&lt;br /&gt;&lt;br /&gt;I've also been improving the documentation. It will always be evolving as I find methods that aren't documented, or are so complex that an example is necessary. So you can always expect updates to both the library and documentation sometime in the future.&lt;br /&gt;&lt;br /&gt;And that will be the end, I promise! ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111853570188167455?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111853570188167455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111853570188167455' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111853570188167455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111853570188167455'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/it-has-begun.html' title='It Has Begun'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111846965661109322</id><published>2005-06-10T22:56:00.000-07:00</published><updated>2005-06-10T23:00:56.616-07:00</updated><title type='text'>New Stuff??</title><content type='html'>Well, with the latest release of VBCorLib out there, I can only hope everyone is enjoying it. I hope they are able to figure out how to use it. I've now put a compiled html help file in the Planet Source Code zip file and I've left it as a separate download at Source Forge.&lt;br /&gt;&lt;br /&gt;I have found the library extremely useful. I wonder if other's have, too.&lt;br /&gt;&lt;br /&gt;I don't know what I would do with it now. It's almost to the point where a new library sh0uld be built on top of this one. Maybe tackle the System.dll from .NET. That'll give some networking stuff going. It'll depend on if I have the time or need.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111846965661109322?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111846965661109322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111846965661109322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111846965661109322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111846965661109322'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/new-stuff.html' title='New Stuff??'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111846169033105805</id><published>2005-06-10T20:46:00.000-07:00</published><updated>2005-06-10T22:12:58.416-07:00</updated><title type='text'>Version 1.2.2 Released!</title><content type='html'>Ok, I have release version 1.2.2. This version contains many features and classes from .NET 2.0. And as you have seen, cArray has been upgraded quite a bit. This version is the most complete release. I've even included a compiled HTML help file. I've begun using this in my production code.&lt;br /&gt;&lt;br /&gt;You can download it at &lt;a href="http://sourceforge.net/projects/vbcorlib"&gt;Source Forge&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111846169033105805?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111846169033105805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111846169033105805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111846169033105805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111846169033105805'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/version-122-released.html' title='Version 1.2.2 Released!'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111845111589239987</id><published>2005-06-10T17:45:00.000-07:00</published><updated>2005-06-10T17:51:55.896-07:00</updated><title type='text'>cArray Upgrades Part 4</title><content type='html'>Hello again,&lt;br /&gt;&lt;br /&gt;Yes, more improvements in the cArray class. First I found a gaping hole in the Copy method. When copying back into the same array and the destination falls within the source range of elements, it ends up copying the same element over and over. I thought the SafeArrayCopyData method was smarter, my bad. So now I've rewritten the entire copy section. It is optimized for value datatypes such as Longs. It correctly copies back into the same array. The UDT arrays have to match, and objects in the source array must be compatible with the destination array. This is checked on each object as it is attempted to be copied.&lt;br /&gt;&lt;br /&gt;And of course, what would an upgrade be without the ability to shoot yourself in the foot? In the Copy methods there is the ability to pass in an address of a copy method that can be used to assign an element from the source array to the destination array. This allows for developers to perform custom assignments between the source and destination arrays.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111845111589239987?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111845111589239987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111845111589239987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111845111589239987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111845111589239987'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/carray-upgrades-part-4.html' title='cArray Upgrades Part 4'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111828629444890473</id><published>2005-06-08T20:02:00.000-07:00</published><updated>2005-06-08T20:04:54.453-07:00</updated><title type='text'>cArray Upgrades Part 3</title><content type='html'>Well, I've now allowed developers to shoot themselves in the foot even more. The cArray.Sort* routines will now accept either an IComparer object, or an address of a compare function. This will allow direct access to the array elements as they are being sorted, making it easier to compare objects and userdefined types. They will be passed into the callback function as ByRef of the type specified. But since the developer need to ensure the signature of the callback method matches the datatype, there is plenty of room to blow things up. More power to you!&lt;br /&gt;&lt;br /&gt;- Kelly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111828629444890473?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111828629444890473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111828629444890473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111828629444890473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111828629444890473'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/carray-upgrades-part-3.html' title='cArray Upgrades Part 3'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111820047945473299</id><published>2005-06-07T20:09:00.000-07:00</published><updated>2005-06-07T20:14:39.456-07:00</updated><title type='text'>cArray 2.0 Upgrads Part 2</title><content type='html'>Ok, all of the Find* methods have been implemented. They even support UserDefined Types. It was an adventure learning about the IRecordInfo object and creating arrays for a UserDefined type without knowing about them before hand. The FindAll method returns an array of the same type as passed in, but only contains the elements that were matched successfully. This is where learning to create a dynamic UserDefinedType array had to be learned, as I would have no idea about your UserDefined types, yet I had to create a new array of them. The Find and FindLast methods return the first instance of a matched element in the array. If no elements matched, then the default value for that array datatype was returned. Well, if you passed in an array of UDTs, I had to return a default single UDT of your's. That is where my IRecordInfo adventure began.&lt;br /&gt;&lt;br /&gt;Babble babble...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111820047945473299?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111820047945473299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111820047945473299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111820047945473299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111820047945473299'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/carray-20-upgrads-part-2.html' title='cArray 2.0 Upgrads Part 2'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111813337666457121</id><published>2005-06-07T01:32:00.000-07:00</published><updated>2005-06-07T01:36:16.666-07:00</updated><title type='text'>cArray 2.0 Upgrades</title><content type='html'>Well, I've been adding the Find methods found in the .NET 2.0 Array class to the cArray class. The upgrade is going nicely. These functions will allow developers to easily shoot themselves in the foot because it required the developer to supply a callback address using the AddressOf operator. In this sense, if the developer gives a bogus value, then BANG, it all comes down. But, by allowing the developer to use callbacks in the manner allows for the array elements to be directly accessed without making duplicates or having to cast datatypes. This is about as close to a delegate as we can get in VB6.&lt;br /&gt;&lt;br /&gt;I've added yet more documentation. It seems to never end.. I really hate writing documentation, but who else is gonna do it? In the end I'm glad it's there.&lt;br /&gt;&lt;br /&gt;good night&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111813337666457121?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111813337666457121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111813337666457121' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111813337666457121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111813337666457121'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/carray-20-upgrades.html' title='cArray 2.0 Upgrades'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111809768616532955</id><published>2005-06-06T15:38:00.000-07:00</published><updated>2005-06-06T15:41:26.166-07:00</updated><title type='text'>Console Features</title><content type='html'>It was a lot of fun implementing all of the new Console class features...&lt;br /&gt;&lt;br /&gt;The .NET 2.0 version of Console contains an extensive set of functions to create elaborate console applications. I have incorporated them into VBCorLib's Console class. Now there is color, cursor and window positiong, window and screenbuffer sizing, and a host of other capabitlites. The Console class can now be used to create much better console applications using VB6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111809768616532955?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111809768616532955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111809768616532955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111809768616532955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111809768616532955'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/console-features.html' title='Console Features'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111809516800000486</id><published>2005-06-06T14:55:00.000-07:00</published><updated>2005-06-06T14:59:28.003-07:00</updated><title type='text'>Console Crashes on Exit</title><content type='html'>It has finally been brought to my attention that when using the Console and you exit a compiled application it crashes! I tracked down the problem and fixed it. I cannot actually see why the problem exists. I have given up on trying to understand why it breaks and just made it work a bit differently. The fix will be included in the next release of course, but what to do in the meantime? Well, thankfully VBCorLib is so flexible, you can fix it temporarily by inserting the following code before the first usage of the Console.&lt;br /&gt;&lt;br /&gt;    Dim sw As StreamWriter&lt;br /&gt;    Set sw =  NewStreamWriter(Console.OpenStandardOutput, Encoding.ASCII)&lt;br /&gt;    sw.AutoFlush  = True&lt;br /&gt;    Console.SetOut sw&lt;br /&gt;&lt;br /&gt;This will make the Console use a different encoding when writing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111809516800000486?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111809516800000486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111809516800000486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111809516800000486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111809516800000486'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/console-crashes-on-exit.html' title='Console Crashes on Exit'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111804706146840203</id><published>2005-06-06T01:35:00.000-07:00</published><updated>2005-06-06T01:37:41.470-07:00</updated><title type='text'>.NET 2.0 Implementations</title><content type='html'>Some of the existing classes have been upgraded to the .NET 2.0 version. The number of changes made makes it impractical to maintain Binary Compatiblity with version 1.0 of VBCorLib. Along with the upgrading of existing classes, new classes are being added from the .NET 2.0 specification.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111804706146840203?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111804706146840203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111804706146840203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111804706146840203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111804706146840203'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/net-20-implementations.html' title='.NET 2.0 Implementations'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13453815.post-111804525688730325</id><published>2005-06-06T01:05:00.000-07:00</published><updated>2005-06-06T01:07:36.890-07:00</updated><title type='text'>First Post</title><content type='html'>Hello!&lt;br /&gt;&lt;br /&gt;This is the first post. I figured since I am constantly changing VBCorLib, I should maintain a place where those changes can easily be expressed, and even receive feedback in a quicker fashion than having to wait until I release a build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13453815-111804525688730325?l=vbcorlib.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vbcorlib.blogspot.com/feeds/111804525688730325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13453815&amp;postID=111804525688730325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111804525688730325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13453815/posts/default/111804525688730325'/><link rel='alternate' type='text/html' href='http://vbcorlib.blogspot.com/2005/06/first-post.html' title='First Post'/><author><name>Kelly Ethridge</name><uri>http://www.blogger.com/profile/06269623878306591514</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
