|
The issue is that your declarations public string[] data; , etc. do not create/allocate an array, they only specify that data will be an array.
You still need to create the arrays with new , just like you do with DataTable .
So it looks like, right after your t2.Rows is "full":
int rowCount = t2.Rows.Count;
this.baseID = new string[rowCount];
this.data = new string[rowCount];
this.date = new string[rowCount];
this.release = new string[rowCount];
etc.
|
|
|
|
|
Jacob Rotary wrote: I'm not sure what I should be doing instead
Instead of what you are doing now? Or, doing something to fix your existing problem?
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Wes Aday wrote: Instead of what you are doing now?
<cruel>Them burgers ain't gonna flip themselves.</cruel>
|
|
|
|
|
Good one.... and oh so cruel. I do not think that we will have a shortage of flippers any time soon anyway
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
Jacob Rotary wrote: i < t2.rows.count + 1
That just don't look right.
|
|
|
|
|
Quote: for (int i = 0; i < t2.rows.count + 1; i++)
You should note that indexing in a table starts at 0 in .NET libraries, and not 1. Meaning List.Count - 1 would be the last element.
There are some programs that starts at 12 though Matlab, Excel and Word have this property in idexing, to great frustration if you dont know it
|
|
|
|
|
Apart from the issue of the missing object creation, I suggest to use Lists instead of Arrays: an array has a fixed size, and that size must be known when you create it. E.g.
public List<string> data = new List<string>();
|
|
|
|
|
If I were writing this code, I'd write something like this:
public class QuoteItem
{
public string Data;
public string Date;
public string Release;
public string BaseId;
}
public class Quote
{
public List<QuoteData> Quotes = new List<QuoteData>();
...
foreeach (DataRow row in ts.Rows)
{
QuoteData quote = new QuoteData();
quote.BaseId = (string)r2["BASE_ID"];
quote.Data = (string)r2["Data"];
quote.Date = Convert.ToString(rs["Date"]);
quote.Release = (string)r2["Release"];
Quotes.Add(quote);
}
}
|
|
|
|
|
"Object reference not set to an instance of an object" is almost never hard to debug. The debugger stops on the line that has trouble, just look for the thing that is null.
If no nulls are visible, usually that's the result of doing something like someMethod().something , ie dereferencing the result of a method (which is not something the debugger shows you, unfortunately). Refactor the code so that the result is stored in its own variable. That's usually a good thing to do anyway.
You've already been told what's null (and you've been made aware of other problems), but this is how you can fix it in many cases in the future, without having to ask for help.
|
|
|
|
|
Hello everyone,
I have a project that requires me to gather inventory data for my computer. I am having problems trying to get the properties of the monitors attached to my computer.
I have one computer that can potentially use a max of 4 monitors, wherein I have a primary monitor and 3 other potential monitors which act as extension screens when I move my mouse to them ( depending on whether they are connected or not ).
I need to grab the following information from each monitor :
DeviceId,
Name,
Horizontal and Vertical resolution,
Whether or not the monitor is the primary one ( a true or false value will suffice ).
I tried using the WMI, Win32_DesktopMonitor class but it is only giving me ONE monitor's results ( the primary monitor ).
I then tried using the Win32_PnPEntity class.
This works, and gives me the number of monitors attached to my computer, but it only gives me Name and DeviceId ( no horizontal and vertical resolution information in this class ).
I forgot to add and I apologize for this... this application I am building will eventually be ran as a Windows Service application.
I discovered this during my development ---- when I tried the Screen class (using the System.Windows.Forms.Screen), the result is erratic.
If I ran the program as a pure console application, it works and gives me the right number of monitors attached to my computer, when I ran the same program as a windows service, it does not. It only gives me ONE ( the primary monitor ).
Does anyone know of a Class provided by .NET 4 that will help me gather the information I need?
I am using .NET Framework 4 and building my application as a Windows Service Application.
For everyone's information, I am using the following environment:
1) .NET 4
2) Visual Studio 2010
3) C# programming language
4) Windows service Application
Any suggestions and advise will be highly appreciated.
modified 30-Aug-12 8:21am.
|
|
|
|
|
There is no class that will do this. Gathering the information you want is problematic at best.
I had to do the same thing, but not use .NET to do it. I ended up writing a class in VBScript that parsed the EDID data in the registry to get all of this information. The problem with that is the EDID data for every monitor to ever be attached to the machine is in there, and there is no way to find out which monitors are actually attached and which is the primary.
The data is under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY
What everything in that pile of data means can be found here[^].
My class supported data formats for all EDID versions up to and including 1.3.
No, I can't give it to you.
|
|
|
|
|
Monthly payment of $10000, the recruitment of Trojan horse to prepare the programmer
|
|
|
|
|
Hi,
I got the following error on server
Method not found: 'Void IBM.Data.DB2.DB2Connection.set_ParameterStreaming(Boolean)
It worked fine on my desktop with Visual Studio 2010.
I'm appreciate if someone can help.
Thanks,
|
|
|
|
|
Ask your question here[^].
|
|
|
|
|
Hello,
When i use below code - App launches and when entering values it loops two times through my if(tb != null) function - Any idea please?
And then somehow my total text box same value twice.
public Form()
{
InitializeComponent();
TextBox[] tbs = new TextBox[] { monTxtBox, tuesTxtBox, wedTxtBox, thurTxtBox, frdtxtBox };
foreach (var c in tbs)
c.TextChanged += new EventHandler(textBoxes_TextChanged);
}
private void textBoxes_TextChanged(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if(tb != null)
{
decimal temp =0;
if(decimal.TryParse(tb.Text,out temp))
{
if(temp < 1)
totalTimetxtBox.Text = tb.Text+temp;
else
MessageBox.Show("Please enter the number between 0 and 1.");
}
else
MessageBox.Show("Please enter a decimal value only!");
}
}
|
|
|
|
|
shah123 wrote: it loops two times through
You mean like your requirement is that the value be between 0 and 1 so your event fires once for the "." and then fires again for the numerical value entered?
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
yes somehow it fires 2 times - dont know why?
i just want to put 0.1 in one textbox,0.2 in 2nd textbox etc and then getting same time my totaltimetxtbox calculates as well
|
|
|
|
|
It does that because that is how you set it up to be. That event is going to fire every time you change the text in anyone of those textboxes. When you enter a "." it's going to fire, when you enter "1" it's going to fire, etc.
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
so any solution to help pleas if possible?
|
|
|
|
|
That depends on your requirements. You could handle one of the other events of the TextBox, such as the Leave event, or LostFocus, or even the Validating event.
|
|
|
|
|
hello, thanks -
Iam trying to get the values of all textboxes and then adding it in totaltextbox but currently it takes only current textbox and when it leaves to 2nd it forgets the first one.
Any help please?
private void textBoxes_TextChanged(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if (tb != null)
{
decimal temp = 0;
if (decimal.TryParse(tb.Text, out temp))
{
if (temp > 1)
MessageBox.Show("Please enter the nnumber between 0 and 1.");
}
}
}
private void textBoxes_Leave(object sender, System.EventArgs e)
{
decimal total = 0;
TextBox tb = sender as TextBox;
if (tb != null)
{
decimal temp = 0;
if (decimal.TryParse(tb.Text, out temp))
{
total += temp;
totalTimetxtBox.Text = total.ToString();
}
}
}
|
|
|
|
|
None of this code should be in the event handlers.
This stuff should be in its own method, called by the events handlers so you're not duplicating code all over the place.
Your addition code should be getting the values of all the textboxes it needs to and adding them together, not just the one where the focus left the textbox or had the textbox value changed.
It's "forgetting" the previous value because your total value is being reset to 0 every time the event handlers are called. Variables declared in a method only exist in that method and are destroyed when execution leaves the method.
|
|
|
|
|
Hi All,
I'm reading back some data from a board most of the time it gives it back correctly and I am displaying in a rich text box. On the odd occasion I get a blank line appearing not a problem! (the end user will not see it) the issue comes when I save the data out. I am
doing the following
Unit_Reply = Unit_Reply.Replace(" ", "");
to get rid of the spaces and
Unit_Reply = Unit_Reply.Replace("\r", "");
to get rid of stray carriage returns, the data is terminated by a \r\n and as this is being output I use the \n to get to a new line. Could there be an extra \r or \n or some other unprintable creeping in?
Glenn
|
|
|
|
|
glennPattonWork wrote: Could there be an extra \r or \n or some other unprintable creeping in?
Very possibly. You could always iterate over the data character by character to see what's in there. A simple test would be to write the index and ascii value of anything with an ascii value lower than the space character.
|
|
|
|
|
When you say iterate the data character, I'm using the ReadExisting() to get all the data coming in up to a New Line so if use lblIncomingData to show this (a label I already had invisible) for this purpose. I just need to convert to int? the value of the first character ( Convert.ToInt16(text) ) & run a simple int place counter right?
Glenn
|
|
|
|