|
And obfuscating your code like that doesn't compile any differently. There is no difference between
foreach (...) doSomething(); OR
foreach (...)
doSomething(); OR
foreach
(...
)
doSomething(); It's all syntactically the same and the compiler doesn't care. As Christian said, it's all a matter of readability. So long as you uphold the language specification, it doesn't really matter how you format your source code (unless you're one of those pseudo-languages like VB).
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Ahh, you see... I didn't know that. I read this C# book and it told me that if I didn't want to use the {}'s on my loops I had to put the doSomething() right under the loop statment. EXACTLY ONE LINE DOWN. I never tried putting it anywhere else, I just though it was the rule.
That's cool, I know that know. Thanks for the incite.
/\ |_ E X E GG
|
|
|
|
|
Hi,
my class has a DateTime property. I would like to use the XmlSerializer and the DateTime Property should be written in RFC 822 format.
I guessed i can implement a typeconverter which can convert between DateTime and string (RFC822). But it seems like my typeconverter is never called.
[System.ComponentModel.TypeConverter(typeof(DateTimeRFCConverter))]
public DateTime PubDate
{get;set;}
is my idea basically wrong or did i missed something? Why use the XmlSerializer the DateTime typeconverter instead of my TypeConverter?
Thanks
.:[Greetz from Jerry Maguire]:.
|
|
|
|
|
XML serialization doesn't make use of a TypeConverter . It is hard-coded to format the intrinsic types and several common types like a DateTime . You could instead implement the IXmlSerializable interface. Though it's undocumented, it's pretty easy to figure out. Otherwise, you could create your own XmlSerializationReader and XmlSerializationWriter , but both are also undocumented and very complex. I'd recommend implementing IXmlSerializable on your class that contains the DateTime you want to format differently.
Also, you could always have a public property that returns and accepts a string in the format you want. You could use XmlIgnoreAttribute on the actual DateTime proeprty while using the value from the string property:
[XmlRoot("example")]
public class Example
{
[XmlIgnore]
public DateTime DT
{
get { return this.dt; }
set { this.dt = value; }
}
[XmlElement("dt")]
public string DTFormat
{
get { return this.dt.ToString("r"); }
set { this.dt = DateTime.Parse(value); }
}
} Note, using the format specifier "r" in DateTime.ToString says that it outputs a date-time in RFC 1123, but this RFC is not found the the format looks the same. Use a custom format if I am wrong.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Hi Heath Stewart,
thanks, i guessed there is another way than implementing IXmlSerializable because everything works fine except the DateTime
this second property has to be public , right? Internal do not work.
.:[Greetz from Jerry Maguire]:.
|
|
|
|
|
Yes, only public properties and fields can be serialized using XML serialization in .NET. You'll notice that I made my property public.
If you don't want the property to show up in the designer or in the code editor, just attribute it like so:
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[XmlElement("dt")]
public string DTFormat
{
get { return this.dt.ToString("r"); }
set { this.dt = DateTime.Parse(value); }
}
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
Hi Heath Stewart,
Good idea, but the important thing for me is that you do not see the property in intellisense. This confuse the developer
.:[Greetz from Jerry Maguire]:.
|
|
|
|
|
What do you think the EditorBrowsableAttribute is for?
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
|
The BrowsableAttribute keeps it hidden from the PropertyGrid (and any other component that honors this attribute). The EditorBrowsableAttribute hides it from the code editor. Reading documentation always helps.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
I'm building an application that connects to SQL Server. I'd like to allow the user to choose one of their defined ODBC connections.
Does .NET provide any classes to assist with determining the system/user defined DSN's?
Coding in the heartland
|
|
|
|
|
Yes, the ODBC DSN's are stored with the Windows registry. They are located in "LocalMachine\ODBC\ODBC.INI\ODBC Data Sources " and "CurrentUser\Software\ODBC\ODBC.INI\ODBC Data Sources " keys. There are many articles here on CP that discuss working with the registry under .NET. Does that help?
- Nick Parker My Blog
|
|
|
|
|
Thanks Nick.
I'll take a look at those.
Ron
Coding in the heartland
|
|
|
|
|
Ron, where are you at in Iowa, I am near Des Moines.
- Nick Parker My Blog
|
|
|
|
|
Clinton, IA here. Good to know there are some Iowans on here.
|
|
|
|
|
I had a huge problem with multicast adresses.
I need to send a multicast packet to my local area network,with all its IPs so other computer will been able to estabilish a TCP/IP connection.
My computer has 3 local area connections(1 for internet, 1 for internal network, and 1 for god know what...), and when i send packets it *Randomly* chooses a local area connection and send data to it.
Is there a way i can choose the local area connection (in CSharp) or can i send my packets to All the connections at once.
|
|
|
|
|
Sounds like a routing problem rather. netsh | ipconfig
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
It can't be a routing problem since there is no routers at all.
It is simply the stupic computer choose randomly to what connection (or nick card) it sends its data.
Ex: I have 2 nick cards. With 2 assigned adresses:
192.168.0.1
and
169.254.111.190
The i send my multicast packet, but i never know which one it will uses.
Since my internal network passes throught 192.168.0.1, it it uses the other nick card, i had just send my message god know where.
Thus i need a way to either send the message to both of them or to choose which one.
(Windows is simple for people who use it for internet word and emails, but it is a constant headache for experts )
|
|
|
|
|
"routing" has to do with a route table, not necessarily a router (which is really just a hardware device with a programmable route table and is dedicated to routing packets). TCP is configured to route packets through a particular network interface card (NIC) depending on the destination address. Any computer with a TCP stack uses a route table.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
try this:
D:\Documents and Settings\lepp>netstat -r
Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 50 56 c0 00 08 ...... VMware Virtual Ethernet Adapter for VMnet8
0x3 ...00 50 56 c0 00 01 ...... VMware Virtual Ethernet Adapter for VMnet1
0x10005 ...00 05 1c 05 9c 67 ...... Realtek RTL8139/810X Family PCI Fast Ethernet NIC
===========================================================================
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.2 20
62.47.38.202 255.255.255.255 192.168.0.1 192.168.0.2 20
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 192.168.0.2 192.168.0.2 20
192.168.0.2 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.0.255 255.255.255.255 192.168.0.2 192.168.0.2 20
192.168.213.0 255.255.255.0 192.168.213.1 192.168.213.1 20
192.168.213.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.213.255 255.255.255.255 192.168.213.1 192.168.213.1 20
192.168.225.0 255.255.255.0 192.168.225.1 192.168.225.1 20
192.168.225.1 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.225.255 255.255.255.255 192.168.225.1 192.168.225.1 20
217.84.117.73 255.255.255.255 192.168.0.1 192.168.0.2 20
224.0.0.0 240.0.0.0 192.168.0.2 192.168.0.2 20
224.0.0.0 240.0.0.0 192.168.213.1 192.168.213.1 20
224.0.0.0 240.0.0.0 192.168.225.1 192.168.225.1 20
255.255.255.255 255.255.255.255 192.168.0.2 192.168.0.2 1
255.255.255.255 255.255.255.255 192.168.213.1 192.168.213.1 1
255.255.255.255 255.255.255.255 192.168.225.1 192.168.225.1 1
Default Gateway: 192.168.0.1
===========================================================================
Persistent Routes:
None
You can clearly see that each route is properly mapped. Use route to modify.
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
But this doesn solve my problem:
Here is the my route table (The good info only).
224.0.0.0 224.0.0.0 65.92.106.225 65.92.106.225 1
224.0.0.0 224.0.0.0 169.254.111.190 169.254.111.190 1
224.0.0.0 224.0.0.0 192.168.100.1 192.168.100.1 1
Currently it uses 169.254.111.190 to send my multicast packets to.
Now if i disable the 169.254.111.190 my routing table would be:
224.0.0.0 224.0.0.0 65.92.106.225 65.92.106.225 1
224.0.0.0 224.0.0.0 192.168.100.1 192.168.100.1 1
and it will send the ulticast packets to 65.92.106.255
IF i disable this lat one i will get:
224.0.0.0 224.0.0.0 192.168.100.1 192.168.100.1 1
and my data would be send to 192.168.100.1
Now if i connect the other 2 i will get
224.0.0.0 224.0.0.0 65.92.106.225 65.92.106.225 1
224.0.0.0 224.0.0.0 169.254.111.190 169.254.111.190 1
224.0.0.0 224.0.0.0 192.168.100.1 192.168.100.1 1
and the data would be sent to 192.168.100.1
Thus you se, depending on some strange criteria, i never know where my data would be send to ?
It can be any of these 3.
224.0.0.0 224.0.0.0 65.92.106.225 65.92.106.225 1
224.0.0.0 224.0.0.0 169.254.111.190 169.254.111.190 1
224.0.0.0 224.0.0.0 192.168.100.1 192.168.100.1 1
I can do like send the data to the first one, but it will create several problems like with Unreal Tournement when you try to play on LAN and can not login.
Thus does anybody know how can i change it using CSharp. (Without disabling all the stuff, to which i will probably not have access anyway in the real world).
|
|
|
|
|
Your net mask seems to be very odd. are you sure you want 224.0.0.0 as net mask for all your connections. Keep also in mind that the network metric is 1 for all your connections. This number is used to decide which connection to choose if several routes are possible the route with the least metric number will be used.
|
|
|
|
|
I only put 224.0.0.0 because it is the only one i care about( multicast mask). The full thing would be too big to display.
I am aware of metrics, but i don't want to modify them since the application i am making is a game and you dont wont a game scrapping all your network info .
|
|
|
|
|
Heyho ppl,
I'm currently trying to figure on HOW I can get a event/test for if an Item in a ListView is beeing displayed on the screen? The thing is I want to display the information only when it's needed (that is, when the users sees it) to optimize speed in very large ListView's.
Any ideas, tips, anything would be most helpfull.
Cheers,
Henrik
|
|
|
|
|
The default implementation of the ListView class doesn't support virtual lists. Instead, you'll have to extend the ListView class with your own class and override WndProc to provide a lot of native concepts. Keep in mind that the ListView control is just a wrapper for the List View common control. There are ways you can do this, but you'll have to P/Invoke functions like SendMessage , create many differents structs, and define many enums or constants that reflect the values of all the Windows messages and notifications. See Windows Controls[^] in the MSDN Library for details. You should be familiar with Win32 APIs and programming.
You could also try searching CP or google the 'net for existing examples. It wouldn't surprise me if anyone has already done this.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|