|
Difficult to know without all the source code. However, from your description, seems that variable i in function AddText is out of range. You should check that i is positive and less than list1.Length. Something like this
private List<string> list1 = new List<string>();
public void AddText(string myText) {
if ((i < 0) || (i >= list1.Length)) {
MessageBox.Show(String.Format("i is {0}. Should be between 0 and {1}", i, list1.Length));
return;
}
if((list1[i] == "") && (k < 1)) {
k = i;
list1[i] = myText;
k++;
}
}
By the way, please mind the ampersand in line
if((list1[i] == "") && (k < 1)) {
Also, if you are looping, shouldn't there be a loop somewhere? I can't see it.
|
|
|
|
|
Hi, thanks for replying. I forgot to include a for loop in my code, so here it is.
public void AddText(string myText)
{
for (int i = 0; i<list1.Count;i++)
{ //Check to see if List element
// is empty
if(list1[i]=="" & k<1)
{
k = i;
list1[i] = myText;
k++;
}
}
return list1[k];
}
|
|
|
|
|
Based on this, try
for (int i = 0; i<list1.Count-1;i++)
|
|
|
|
|
In this example I imaging that you would receive the index out of range at the return list1[k]; If you notice inside your for loop you assign k to the value of i then assign the value to the list, then you increment k by one value.
this could work if you change the return list1[k] to return list1[k-1] (however you would also want to add some extra code to verify "k" is still within the index range of the list.
|
|
|
|
|
Try debugging and stepping through your source code.
It will help you figure out the exact line where you are getting this error.
Further, based on this, you will be able to diagnose this error.
|
|
|
|
|
Pardon my ignorance, but I don't see where k gets initialized. It gets a little confusing, too, when you use letters for different things. In class 1, it's an integer; in class 2 it's something else.
Will Rogers never met me.
|
|
|
|
|
Good points. I,j,k are quite confusing.
|
|
|
|
|
Hi, thank you all for responding. K is initialized outside of the function and I have modified my function as follows:
class Class1
{
private int k = 0;
private List<string> list1 = new List<string>();
//Passing in myTemp as a string
public string AddText(string myText)
{
int i = 0;
do
{
//check to see if element is empty
if (list1.Count == 0)
{
//Add the content of myText into list1
list1.Add(myText);
i++;
}
} while (i < list1.Count);
//Returns the content of the elements that were affected
return list1[i];
}
}
I have stepped through the function and Visual Studio says the line, return list1[i];is the cause of the error message "Index was out of range". I don't know what else to do. If you can explain why I'm getting the error by looking at my code, please point it out. Thanks for your help.
-- modified 7-Jul-12 9:16am.
|
|
|
|
|
That's a good clue! Now, add list1.Count and i to the Watch list and step through again, observing how each line of code affects them. I think you'll find that, when you hit the return statement, i = list1.Count . That will put it out of range, since the last element of list1 has an index of Count - 1. Just a guess...
Will Rogers never met me.
|
|
|
|
|
The reason this code would throw an out of range exception is if the code executes within this section
if (list1.Count == 0)
{
list1.Add(myText);
i++;
}
now you have added an item to the list and the count is now 1. You then increment i from zero to 1.
Now you are trying to return the first item in the collection (a zero based index collection) with the value of 1 when the value you should be requesting is 0
return list1[i-1] or list1[0] or list1[list1.Count - 1] etc. of course if your i value is 0 and you try list1[i-1] you will also receive an error because that would be the value -1 and that is out of range.
Hope that helps if you haven't already figured this out.
|
|
|
|
|
i'm working on an application that marks a computer that ever accessed it.
i mark it using computer name, but since computer name can be changed, i'd love to know whether static IP can be changed or not, thanks before.
|
|
|
|
|
|
PIEBALDconsult wrote: Of course they can.
guess i've to find something else that's really static.
btw thank you.
|
|
|
|
|
If you can get the MAC address of the network card of the computer connecting to your server, that should work for what you are describing.
There are ways to change the MAC address too, but it not something you will normally see.
Soren Madsen
|
|
|
|
|
Excellent answer, Soren. Yes, the MAC address can be spoofed, but 99.999% of users won't have any idea how to do so, nor any reason to. IIRC, on a local network the ARP command will return the MAC address. On the Internet, I'm not sure that there is a way to return this information, but it's worth looking into.
Will Rogers never met me.
|
|
|
|
|
Thanks Roger,
I agree, the OP (and just about all of us) is highly unlikely to run into anyone spoofing the MAC address, but I thought I would mention that part too.
Soren Madsen
|
|
|
|
|
You haven't said what kind of application you're working on, nor if you are writing the server-side code or client side.
On the server-side, it doesn't matter if you're writing a ASP.NET or Windows Forms app, you cannot get the client MAC address. You'll end up getting the MAC address of the near-side of the router closest to your server, not the client MAC.
If you're writing client-side code in a Windows Forms app, the client get easily get it's own MAC address and send that information in a request to the server. You'll have to implement the interface on the server and client for this to work.
|
|
|
|
|
I know the OP has not given a whole lot of detail, but since he posted his question in this forum, I figured it would be valid to mention the MAC address. He is looking for something that is both unique to a computer and does not change.
I totally agree he might not be able to acquire the MAC address and that totally depends on what he is developing.
Soren Madsen
|
|
|
|
|
i've tried it and i got something like 50E549A6XXXX.
thank you very much.
|
|
|
|
|
In a C# 2010 application, I created a new linq to sql (*.dbml) file. When this occurred, the .net framework created a default connection string. However I want the *.dml file to use the connection string I specify.
to solve this problem, I have the following questions:
1. When I do create a new .dbml file, how to I make the .net framework use the connection string I want to use and not come up with a default connection string?
2. For an existing .dbml file that I added to the application, how can I change the default connection string to the value I really want to be used?
|
|
|
|
|
Whenever you create instance of DataContext pass the connectionstring in the constructor. This way you will be able to bypass the default connectionstring.
http://www.exploresilverlight.com
Cheers!
Vinod
|
|
|
|
|
can you show me a code example of what you are referring to?
|
|
|
|
|
TestDataContext dataContext = new TestDataContext("connectionstring");
http://www.exploresilverlight.com
Cheers!
Vinod
|
|
|
|
|
For a C# 2010 application, I dragged a new table onto the *.dbml surface. When this occurred, the .net framework changed the exisiting connection string to a default one that it came up with instead of using the existing connection string.
Thus to resolve this question, I have the follwoing questions:
1. When I drag a new table onto the .dbml designer surface, how can I keep the .net framework from changing the existinng connection string and use the existing connection string?
2. For an existing .dbml file that I already dragged the table onto the .dbml designer surface, can can I fix the exisiting code so I do not need to recreate the code from scratch again?
|
|
|
|
|
Some time back I watched a demo from Anders Hejlsberg where he showed how to get the filename and linenumber at compile time by declaring a function using syntax similar to the following:
void log(string message, string filename = _file_, int lineno = _line_)
I don't recall if that was something still being worked on or a proposal or if it is in an actual shipping version of C#.
1. Is this in some version of C#,
2. and if so what version of C# is it in?
3. And what is the actual syntax?
Yes, I know I can get this info in builds where a .pdb is provided through the StackFrame class. That's not what I'm asking.
If your actions inspire others to dream more, learn more, do more and become more, you are a leader." - John Quincy Adams You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering” - Wernher von Braun
|
|
|
|