FeliceM
FeliceM

Reputation: 4219

C# string problems

I have a multiline text box called txtOutput that receives messages from the serial port. Each new message is a new line and represents a number from 1 to a maximum of 4 digits. The method used to add the data in the multiline textbox is an append. I have no problems with the above feature, it is working fine.

I would like to take the last message from the txtOutput and show it in textBox2 if the number is less than 1000, and in textbox3 if it is not. Then both text boxes would be updated.

I would appreciate if someone can give in an example especially in how to get the last message from the multiline textbox to a variable and how to update the textboxes if there is a new value.

Upvotes: 1

Views: 785

Answers (2)

FeliceM
FeliceM

Reputation: 4219

Thanks to all for the suggestions but as I mentioned in my comments, the suggested methods did not work because the content of the string was not accurate and I ended up receiving in the textBox 2 and 3 only part of the data and not always. I have solved the problem (thanks to other advices) using RegEx in this way:

 if (txtOutput.Text.Length > 0)
        {
            MatchCollection mc = Regex.Matches(txtOutput.Text, @"(\+|-)?\d+");
            if (mc.Count > 0)
            {
                long value = long.Parse(mc[mc.Count - 1].Value);
                if (value < 1000)
                {
                    textBox2.Text = value.ToString();
                }
                else
                {
                    value = value - 1000;
                    textBox3.Text = value.ToString();
                }
            }
        }

this is working fine and no piece of information are lost.Thanks again for your advices.

Upvotes: 0

Darren
Darren

Reputation: 70796

You should save the last message (from the serial port) in a variable such as lastSerialMesssage. You can then convert this value to an integer and use a conditional statement to check if the value is smaller than 1000, if it is, set TextBox3 to the last serial message value, else set the value to TextBox2.

string lastSerialMessage = SerialPortMessage;

int lastMessageValue;
Int32.TryParse(lastSerialMessage, out lastMessageValue);

if (lastMessageValue < 1000)
{
   TextBox3.Text = lastSerialMessage;
} else {
   TextBox2.Text = lastSerialmessage;
}

http://msdn.microsoft.com/en-us/library/f02979c7.aspx

Upvotes: 3

Related Questions