|
But had it been that way from the start...
And if braces (as I use them) were required instead it would be clearer.
switch ( myInt )
{
case 0:
case 1:
{
...
}
case 2:
case 5:
case 6:
case 7:
{
...
}
}
|
|
|
|
|
FWIW: in C the normal curly brackets allow local variable declarations, which sometimes comes in handy:
switch ( myInt ) {
int x, y;
case 1:
x=...;
y=...;
return x*y;
case 7:
x=...;
y=...;
return x/y;
}
C# does not like the idea. It does accept
switch ( myInt ) {
case 1:
int x=2;
int y=3;
return x*y;
case 7:
x=3;
y=4;
return x/y;
}
which is quite ugly IMO.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
I would have loved (in an evil and twisted way) to do this:
switch (myInt)
{
case 1:
int x = 2;
int y = 3;
return x * y;
case 7:
return x / y;
}
But sadly it complains about the unassigned x and y ..
|
|
|
|
|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
I just pulled out my VAX C 3.0 book (circa 1989) to see what it says on the matter.
It says that you can declare, but not initialize variables defined "in the compound statement within a switch statement".
switch ( x )
{
int i = 42 ; // Will be uninitialized (no warning?)
case 1 :
{
int j = 42 ; // This, of course, is limited to this scope
}
}
The C99 spec I have seems to agree with this, but it's hard to understand.
|
|
|
|
|
Luc Pattyn wrote: do you see a way to generalize without much expense
I'm hoping there is a way, but at the moment I have no need of one (which doesn't usually prevent me from trying anyway ).
When I whipped that up, I had the idea that it might serve as a general template for other such handlers that might require data from a derived EventArgs. At least it uses the pre-existing delegate.
I was just trying to make a generic version, but it's not as straight-forward as I would hope and probably not very useful. I would expect an anonymous method could be passed in that would do the actual work.
My feeling is that checking InvokeRequired and Invoking as necessary should be built into the classes and the application shouldn't need to worry about it. So what if slows down the code a little when it isn't required.
|
|
|
|
|
Okay, guys it seems that right now a "thank you" is all I have to say in this thread.
Thank you for the help guys! I checked multi threading, and I'm using the backgroundworker. Just as you've said, it produced the cross thread errors, but I got rid of them relatively easily. So I'm on my way, thank you again!
|
|
|
|
|
you're welcome.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Luc Pattyn wrote: generalize without much expense
Code is cheap.
I defined an abstract class EventArgsWrapper which derives from EventArgs then derived EnabledEventArgs (to hold a bool) and TextEventArgs (to hold a string). My DoSomething method can then use the provided EventArgs to decide what task is requested.
private void
DoSomething
(
object sender
,
System.EventArgs e
)
{
System.Windows.Forms.Control c = sender as System.Windows.Forms.Control ;
if ( c == null )
{
throw ( new System.InvalidCastException ( "sender must be a System.Windows.Forms.Control" ) ) ;
}
if ( c.InvokeRequired )
{
c.Invoke ( new System.EventHandler ( DoSomething ) , sender , e ) ;
}
else
{
EventArgsWrapper w = e as EventArgsWrapper ;
if ( w == null )
{
throw ( new System.InvalidCastException ( "e must be an EventArgsWrapper" ) ) ;
}
if ( w is EnabledEventArgs )
{
c.Enabled = ((EnabledEventArgs) w).Enabled ;
}
else if ( w is TextEventArgs )
{
c.Text = ((TextEventArgs) w).Text ;
}
}
return ;
}
// sender is already known to be a Control in this case
string temp = sender.Text ;
this.DoSomething ( sender , new EnabledEventArgs ( false , e ) ) ;
this.DoSomething ( sender , new TextEventArgs ( "Wait..." , e ) ) ;
/* Long-running process */
System.Threading.Thread.Sleep ( 5000 ) ;
this.DoSomething ( sender , new TextEventArgs ( temp , e ) ) ;
this.DoSomething ( sender , new EnabledEventArgs ( true , e ) ) ;
I suppose I could use Reflection to enumerate the public properties of the EventArgs and use them to set the sender's properties that match by name (and type?)... nah, far too much work. Maybe a Dictionary...
|
|
|
|
|
Yes, that looks OK.
I'm not sure I would have a EventArgsWrapper class, TextEventArgs could derive from EventArgs; a simple null test would filter the real nulls, the sequence of if(e is ...) would take care of the rest anyway.
Your example is still limited to properties that exist for all Controls; it becomes tedious when a property exists only for some, such as SelectionStart (TextBox, ComboBox, MonthCalendar, ...). Maybe use your style for the popular ones, and reflection for the others.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
The EventArgsWrapper holds the reference to the InnerEventArgs that is common to Enabled... and Text...
public abstract class EventArgsWrapper : System.EventArgs
{
public System.EventArgs InnerEventArgs { get ; private set ; }
public EventArgsWrapper
(
System.EventArgs InnerEventArgs
)
{
this.InnerEventArgs = InnerEventArgs ;
return ;
}
}
public sealed class TextEventArgs : EventArgsWrapper
{
public string Text { get ; private set ; }
public TextEventArgs
(
string Text
,
System.EventArgs InnerEventArgs
)
: base
(
InnerEventArgs
)
{
this.Text = Text ;
return ;
}
}
But if I rewote it so that it held a Dictionary of various things, I probably wouldn't need to have a hierarchy of classes, only the one. That would reduce the amount of Reflection needed considerably.
Luc Pattyn wrote: Maybe use your style for
I'm not saying I'd use it all; it's primarily an intellectual nerdy exercise.
Anyway, I need a nap. Perhaps I'll experiment more later.
|
|
|
|
|
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Look this codeproject article:
Multithreading, Delegates, and Custom Events[^]
It should help you quite a bit.
.45 ACP - because shooting twice is just silly ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001
|
|
|
|
|
Hi
I am not sure if I am posting this in the correct forum. If not then please advice me.
I need to recreate an application in C# that controls a device. The reason I am doing this is because the application provided with the device is incifitient.
What do I need to know about the driver in order to control it by the program? At the moment I have very little knowledge of device drivers, so any help is appreciated. I have found lots of tutorial on how to use PInvoke, but do I need to find out what methods the device driver will allow the software to connect to? and if so how do I go about it?
Once again any help is appreciated as I am a student who is still in the learning stage.
Oh the device is an LED matrix control unit that is connected by both usb (sends the device control) and component video (sends the images to be displayed on the LED matrix)
|
|
|
|
|
You might start by looking at this[^] article and follow the example of the author (contact the manufacturer).
I found this by a simple Google search. If you do the same you are likely to get more and better help than you will here.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
Why do programmers often confuse Halloween and Christmas?
Because 31 Oct = 25 Dec.
|
|
|
|
|
I would tackle the manufacturer of your peripheral and driver, and demand documentation. That is the way to learn what commands are available.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Might be worth looking at Sharb USB Lib[^]. You may be able to control the device directly by reading and writing to the USB port.
You would still need a lot of input from the manufacturer though.
|
|
|
|
|
How can I calculate muslim holiday in georgian calendar? Do you have any source code?
|
|
|
|
|
dataminers wrote: Do you have any source code?
I have plenty. Millions upon millions of lines of the stuff.
dataminers wrote: How can I calculate muslim holiday in georgian calendar?
Well - if I were you, I'd start by working out what the underlying algorithm is for calculating the holidays. With so many practicing muslims the world over, I'm guessing that they aren't just the whim of a random group of people.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Pete O'Hanlon wrote: I have plenty. Millions upon millions of lines of the stuff.
Yeah, but does that contain anything related to Saint George?
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Hold on while I add a comment.
It does now.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Now is the time to provide an actual answer to the OP then.
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
Don't forget to include this reference[^].
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles]
I only read formatted code with indentation, so please use PRE tags for code snippets.
I'm not participating in frackin' Q&A, so if you want my opinion, ask away in a real forum (or on my profile page).
|
|
|
|
|
|
dataminers wrote: georgian calendar
Don't know about this. Know something about Gregorian and Julian calendars.
Regards
David R
---------------------------------------------------------------
"Every program eventually becomes rococo, and then rubble." - Alan Perlis
The only valid measurement of code quality: WTFs/minute.
|
|
|
|