|
I think this is very slow for a long string.
I was thinking something like:
string st = "a very long string" ;<br />
System.Text.StringBuilder sb = new System.Text.StringBuilder(st);<br />
System.Text.StringBuilder sb2 = new System.Text.StringBuilder("");<br />
foreach(char ch in sb.ToString())<br />
sb2.Insert(0,ch);<br />
foreach(char ch in sb2.ToString())<br />
{<br />
}
but I'm looking for something more faster.
|
|
|
|
|
Enumerators in the BCL do not go backward. Not every one goes "forward", either, in cases where it doesn't make sense like with a Hashtable that isn't a linear list of items.
There really is no other way to do what you want short of reversing the string, but then you're taking an O(2n) performance hit rather than a O(n) hit. Even enumeration is an O(n) performance hit but the enumeration code is a litte faster.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Foreach itself is actually slower than for( ;; ) (for now, on .NET 1.1), so for a tight loop like this one, you'll want to use for( ;; ) anyway.
And don't worry, for( ;; ) is a lot faster than you might think at first glance.
|
|
|
|
|
for( ; ; ) by itself is very fast.
But to access elements in an array using indexes is slow.
|
|
|
|
|
|
char[] chars = "this is a very long string, not!".ToCharArray();
Array.Reverse(chars);
foreach(char c in chars)
{
// do what you want
}
|
|
|
|
|
|
Hi all,
In C#, how do I determine if certain components, like the right version of .Net framework, service pack and other software like latest media player are installed on a local machine?
I assume that I can look through the registry and search for the corresponding keys, but I wonder if there is a better way to achieve that.
TIA!
|
|
|
|
|
Detecting whether certain software is installed is different for almost every application and depends greatly on what technology you're using. The .NET Framework is installed using Windows Installer (for most Windows operating systems) so you can detect the ProductCode using MSI functionality. For general detection of the .NET Framework (1.1 and newer), you can check for the existence of a registry key under HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP. Note that it's not ".NET" but "NET" for this registry key. You'll find - if installed - the Framework version numbers like "v1.1.4322" under there. This wasn't standardized until 1.1 so 1.0 will not always be there like that. There are other ways, though.
What you need to do is search http://support.microsoft.com[^] for HOWTO articles for whatever products you need. Each may be different.
If the product was installed using Windows Installer than there is a standard way of detecting that product based on the registration information that Windows Installer (MSI) writes. Read about MSI in the Windows Installer SDK at http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp[^] for more information.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I need to create a list of datas.
This is my trying code:
class IconList
{
unsafe IconList()
{
mIcon = new Icona();
myIconPrec = null;
myIconSucc = null;
}
unsafe public IconList* AddIcon()
{
*myIconSucc = new IconList();
myIconSucc->myIconPrec = this; <----- HERE
myIconSucc->myIconSucc = null;
return myIconSucc;
}
unsafe public void RemoveIcon()
{
myIconSucc->myIconSucc = myIconPrec;
mIcon.Dispose();
~IconList(); <------ HERE
}
public Icona mIcon;
public unsafe IconList* myIconPrec;
public unsafe IconList* myIconSucc;
}
I need your help in two points.
It is not possible make this:
myIconSucc->myIconPrec = this;
I know that pointers are not the strong piece of C# but i need your help.
Thanks.
But how do i assign to a pointer the address of this one?
If iwant to delete and release the memory of an object of the list (i want to remove) have i to call some distructor or some sispose function explicitally?
|
|
|
|
|
There is absolutely no need of unsafe code in C#. The only viable reason I've ever seen if for fast pixel-by-pixel changes of images, which is still possible - albeit slow - using purely managed code.
You also need to understand that every class (besides numerical types, structures, and enumerations) in .NET is a reference type, or basically a managed pointer. You do not need to use the dereference operator.
If a first-in, first-out (FIFO) buffer is what you need, use a Queue . Otherwise, search this site - or the Internet - for linked list[^] and you'll find lots of implementations.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Ok thanks, but to get the pointer of an object inside itself how can i do?
That is:
myPointer = this; //doesn't work
|
|
|
|
|
What is myPointer declare as? And why are you storing a reference to this in this itself? And when you say "doesn't work", please be explicit. Is an exception thrown? What exception? What message text? Does it not compile?
I - nor anyone else - can help you if you don't tell us the necessary details. We aren't familiar with your code so you need to tell us exactly what you're doing.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi All,
I'd like to put together a couple of forms in a C# class library, and use them from existing VB6 code. Anybody know of any samples to do this? Any tips? It's been my understanding that .NET classes are basically COM objects, is this correct?
Thanks in Advance for any help
|
|
|
|
|
|
Heath,
Thanks for the tip. This is the info I was looking for.
Aaron
|
|
|
|
|
If I have an app.config file in another project, is there a way to bring that over into another project?
Thanks a lot,
Jim
|
|
|
|
|
Copy and paste from the Solution Explorer or from Windows Explorer itself. There's no automated way to do this short of either writing your own add-in or finding someone else's, if even available.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hello all,
I bind combo box with datasource and need to select the the text in the combobox prgramaticly. I tried
tiltle.SelectedText = mytitle;
but it dosnt work with me ... please help
Regards
Hay
|
|
|
|
|
Use ComboBox.SelectedIndex . If you need to find the right item, enumerate through ComboBox.Items .
ComboBox.SelectedText is - if you read the documentation - only the text that is selected in an editable ComboBox , or one with ComboBox.DropDownStyle set to ComboBoxStyle.DropDown or ComboBoxStyle.Simple .
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thanks Heath so much...
I Found the soultion for this problem. if i need to select the text programaticly i did this code.
mycombobox.Selectedindex = mycompobox.FindStringExact(thetext)
becaue the FindStringExact return the string index in the combobox
cboGroup_Insurance.SelectedIndex = cboGroup_Insurance.FindStringExact(Group_Insurance_Plan);
Group_Insurance_Plan variabl contain the text i want to select
Thanks again
Hay
|
|
|
|
|
FindStringExact does the same thing I mentioned, only with a single call. It really just depends on how much control you want over the process of enumerating and getting the right index for an item.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I've created a managed DLL with C++ wrapping unmanaged code. This error gets a bit tricksy. Here we go.
Loading the dll (using a reference) and building causes no errors. Declaring an object from inside that dll causes no errors (such as MyClass mclass; ). DEFINING that variable (mclass = new mclass(); ) causes the program to exit before it has started. That is, I can't step through the program to an offending line, the program exits before any line is executed.
Anyone got any ideas?
DC
|
|
|
|
|
First, are you sure that mclass is actually managed using, currently, the __gc construct? If you're doing this in Whidbey beta, you should use the ref class construct for the class declaration.
Second, are you sure the constructor isn't causing a catasrophic failure? Can you step into the constructor? If the constructor is calling unmanaged code bad code or calls can make it fail as opposed to throwing an exception since the code is, well, unmanaged by the CLR (which is why it's called unmanaged).
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Sustained Engineering
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Yes, the managed class is actually managed with the __gc construct. Also, the constructor makes no outside function calls, the entirety of it is variable definitions. No, I can't step into the constructor. Setting a breakpoint does absolutely nothing, which makes me think it's something happening before execution.
I'm on XPSP2.
DC
|
|
|
|