Page Inclusion (Screen Scraping)
8
Converts a string representation of a number with any base(binary, octal, decimal, hexadecimal, up to base 36) to a long int.
8
This snip opens any kind of document (e.g. .PDF, .DOC, .C, .HTM, etc.) using the default application associated with it. This relies on starting a new process with the .UseShellExecute property set to true.
The main overloaded function OpenDoc(filename) will open any associated document using the default OPEN verb. If you are trying to edit a file, for example, a command file, then you need should call OpenDoc with the "EDIT" verb. Some associations also a "PRINT" verb.
Since the return result is a System.Diagnostics.Process object, you can also monitor or kill the process.
Example:
OpenDoc("C:\\SomeDocumentation.pdf");
OpenDoc("C:\\AWebPage.htm", "EDIT");
OpenDoc("C:\\Test.txt", "PRINT");
System.Diagnostics.Process doc = OpenDoc("C:\\WebPage.htm");
The main overloaded function OpenDoc(filename) will open any associated document using the default OPEN verb. If you are trying to edit a file, for example, a command file, then you need should call OpenDoc with the "EDIT" verb. Some associations also a "PRINT" verb.
Since the return result is a System.Diagnostics.Process object, you can also monitor or kill the process.
Example:
OpenDoc("C:\\SomeDocumentation.pdf");
OpenDoc("C:\\AWebPage.htm", "EDIT");
OpenDoc("C:\\Test.txt", "PRINT");
System.Diagnostics.Process doc = OpenDoc("C:\\WebPage.htm");
8
Convert an ebcdic buffer to an ascii buffer.
8
Nifty way to swap two integers in C (C++) without using a temporary variable. Uses one line of code (3 assignments).
7
The modus operandi for this is similar to that taken by PHP's implementation of such functions. It's comparitively memory-intensive, but is much faster than running a whole bunch of tests.
Basically, you set a mask -- an array of 256 null bytes -- and set those that correspond to characters you wish to trim. Then, rather than having to test if a character is in the set of characters to trim(O(n), or linear time on *ws), you just test once (O(1), or unit time) to see if the byte in question is set.
And of course, to trim(), you just wrap trim() around both ltrim() and rtrim().
One point of caution: these functions trim in place, so copy strings before trimming them. (Of course, if you usually want access to both pre- and post-trimmed strings, you could always make these malloc() a new string and return a pointer to it . . . )
Basically, you set a mask -- an array of 256 null bytes -- and set those that correspond to characters you wish to trim. Then, rather than having to test if a character is in the set of characters to trim(O(n), or linear time on *ws), you just test once (O(1), or unit time) to see if the byte in question is set.
And of course, to trim(), you just wrap trim() around both ltrim() and rtrim().
One point of caution: these functions trim in place, so copy strings before trimming them. (Of course, if you usually want access to both pre- and post-trimmed strings, you could always make these malloc() a new string and return a pointer to it . . . )
7
Dynamically Populate a CheckBoxList in C#
7
Unwind and Format Exception Stack
7
Prior to NETCF 2.0, this was a royal pain. Now, it's pretty straight-forward.
These three related functions provide basic Clipboard operations for text. While not terribly useful by themselves, they become more useful when attached to a field's context menu or, better yet, implemented in a custom control.
These three related functions provide basic Clipboard operations for text. While not terribly useful by themselves, they become more useful when attached to a field's context menu or, better yet, implemented in a custom control.
6
Another pull from my growing-towards-beta CGI library: sgcgi_url_unescape().
Note the use strcpy, which is faster than the equivalent memmove()ing. To ensure 64-bit safety, I plan to rename this function and then conditionally compile it to point to either strcpy or a 64-bit-safe memmove() implementation of strcpy.
However, even though copy order isn't guaranteed for strcpy, on 16-bit and 32-bit systems, all known implementations copy byte-by-byte from lower addresses to higher addresses. Some 64-bit optimized compilers may copy 8-byte chunks, making the assumption of full linearity unstable at best.
I know it sounds like I'm justifying use of nonstandard code for convenience . . . *blush* . . . it's just something that putting in a -DPEDANTIC type of preprocessor flag could fix if broken, and its SO much faster!
Note the use strcpy, which is faster than the equivalent memmove()ing. To ensure 64-bit safety, I plan to rename this function and then conditionally compile it to point to either strcpy or a 64-bit-safe memmove() implementation of strcpy.
However, even though copy order isn't guaranteed for strcpy, on 16-bit and 32-bit systems, all known implementations copy byte-by-byte from lower addresses to higher addresses. Some 64-bit optimized compilers may copy 8-byte chunks, making the assumption of full linearity unstable at best.
I know it sounds like I'm justifying use of nonstandard code for convenience . . . *blush* . . . it's just something that putting in a -DPEDANTIC type of preprocessor flag could fix if broken, and its SO much faster!
6
This is a function that receives a dataTable and return it in a pivoted way.









