[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 69
  • Last Modified:

Test if a String can Convert to a system.media.color

Is there a way to check if a String will Convert to a system.media.color type without a Try...Catch Block and throwing an Exception?
There must be but I just can't find it...

Thanks
0
p-plater
Asked:
p-plater
  • 3
  • 3
  • 2
  • +2
1 Solution
 
Ryan ChongCommented:
what kind of string do you have here?

you probably can't transfer a String to system.media.color object directly unless there is a built-in function there, and it wil throw an exception if invalid string input parameter was found. hence a try catch would probably tell you whether your string input parameter is valid.
0
 
p-platerAuthor Commented:
I am using the Following to Convert the String.
supplierToPurchase.CustomerRatingBrush = TryCast(New BrushConverter().ConvertFromString(drd.GetString(10)), SolidColorBrush)

Open in new window


I am using a Try Catch but I'm after a Check if the sting will convert WITHOUT using Try Catch.
0
 
David Johnson, CD, MVPOwnerCommented:
0
What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 
p-platerAuthor Commented:
The string is like #256142.
I am Not after system colors..

I am after a way to TEST if a String will convert to a Color WITHOUT using Try...Catch..
0
 
Ryan ChongCommented:
TryCast ensures that your program will not getting an error if you passing the wrong parameter into the function ConvertFromString.

TryCast Operator (Visual Basic)
https://msdn.microsoft.com/en-us/library/zyy863x8(v=vs.100).aspx

If an attempted conversion fails, CType and DirectCast both throw an InvalidCastException error. This can adversely affect the performance of your application. TryCast returns Nothing (Visual Basic), so that instead of having to handle a possible exception, you need only test the returned result against Nothing.

you need to handle that as part of a good practice in programming. you can always do that without the TryCast, but your program could be at risk of crashing due to program error exception.
0
 
hnasrCommented:
Quick reply, not checked.
WITHOUT using Try...Catch
Start by creating a temporary table containing all available color codes, or just the ones of interest.

Test the required value if exists in the table.
0
 
p-platerAuthor Commented:
I tried to use TryCast but it doesn't allow itself to be used with type "Color"

TryCast(New ColorConverter().ConvertFromString(drd.GetString(10)), Color)

Error
"TryCast Operand must be a Reference type - Color is a Value Type"
0
 
Ryan ChongCommented:
you may try:
TryCast(new BrushConverter().ConvertFromString(drd.GetString(10)), SolidBrush)

Open in new window

or
TryCast(new BrushConverter().ConvertFromString(drd.GetString(10)), SolidColorBrush)

Open in new window

0
 
louisfrCommented:
BrushConverter is to get a Brush, not a Color.
Did you try ColorConverter instead?

ColorConverter.ConvertFromString will always return a Color if the string starts with # followed by 3, 4, 6 or 8 hexadecimal digits. You can use a regex or a loop to check that.

Here is the regex:
bool isOk = Regex.IsMatch(valueToParse, "^#([0-9a-fA-F]{3,4}|([0-9a-fA-F]{2}){3,4})$");

Open in new window

0
 
louisfrCommented:
The question wasn't about converting but checking if the conversion is possible.
The destination type wasn't a Brush but a Color.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now