|
|
I've heard that too (and I see I'm mentioned ). In this case, however, is sounds like an epoch problem since Java and .NET (not to mention the OLE DATE and who knows what else) all use different epochs. The DateTime struct in .NET also uses ticks (100 ns) instead of ms like most structs. And developers thought all the different text encodings were a problem!
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I never even used J#, but you could be right. I didn't know that they actually replicated the Java classes like DateTime that have equivalents in C#, but it does make sense. In any case, the poster'd probably be MUCH better off using SharpZipLib...
|
|
|
|
|
The didn't. The java.util.Date is nothing like the DateTime . The J# portability assemblies work just like the Java classes. Encapsulating a DateTime in a Date , for example, would screw-up any code that modifies the Date .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
DateTime in .NET and the date and time in Java use different epochs (start times). DateTime is the number of ticks from 00:00:00 Jan. 1, 0001 AD. Java's Date starts at 00:00:00 Jan. 1, 1970 AD and is the number of milliseconds from that date/time.
A tick is 100 nanoseconds. So, to convert a DateTime to the number of milliseconds to use, you'll need to take this information into account and convert the number.
The best way is to use the java.util.Date class. When working with the vjslib.dll assembly, keep in mind that this assembly exists only to make it easier for Java developers to make the move. It's intended to work just like it would if you were still developing with Java classes. Classes in the FCL and Java assemblies should not be inter-mixed without proper consideration.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Is java.util.Date a part of vjslib or is it from a different library?
Thanks for your help.
Elena
|
|
|
|
|
Yes it's in the vjslib.dll assembly, along with pretty much everything else you'd find in the JRE (besides the swing stuff). If you want to know for sure, run ildasm.exe (the IL Disassembler found in the .NET Framework SDK bin directory) and open the vjslib.dll assembly in the %WINDIR%\Microsoft.NET\Framework\v1.1.4322 directory. This will show you the assembly and Type metadata, as well as the IL for any module(s) in the assembly (if you know how to read IL).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
How can I display a popup tip when the mouse moves over a certain area on a form?
Help class can show popup tips but I cannot hide the tip when I am done with it. Any suggestion?
Thanx
|
|
|
|
|
A simple hack would be to put a Panel in that region of the form and use the ToolTip component to set the tooltip for that region. The ToolTip is an IExtenderProvider that provides "properties" to other controls. Once you add it, click on that Panel and you'll see something like "ToolTip on panel1" (or whatever you call your panel variable).
The other way is to P/Invoke SendMessage and send the tooltip common control messages, which is really all the ToolTip component is doing. You can use the Form.MouseHover event to determine when to show the tooltip.
You can find out more about the tooltip common control and it's messages in the Platform SDK: http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/tooltip/reflist.asp[^].
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Great ideas. Thanks a lot.
|
|
|
|
|
I meet with one problem in C# : when double convert to int
If value is halfway between two whole numbers, the even number is returned; that is, 4.5 is converted to 4, and 5.5 is converted to 6.
In MSDN it is circumscribed as correct operation, well and when a classical understanding of math operation
round (5.5) == 6 and round (5.4) == 5. I think that the Microsoft imposes the understanding of roundoff of numbers.
Would like to hear your judgements concerning...
|
|
|
|
|
Well, I've always viewed a cast that discards specificity as a truncation of sorts. The semantics of casting from double to int are what I'd expect of a truncation routine, so I'm not unhappy with it. How about something like this for your needs?
<br />
public static int Round(double d) {<br />
if (d >= 0) {<br />
return ((int)(d + 0.5D));<br />
}<br />
else {<br />
return ((int)(d - 0.5D));<br />
}<br />
}<br />
-Jeff
here, bloggy bloggy
|
|
|
|
|
Thank Jeff for your answer, I yesterday have written approximately same function.
|
|
|
|
|
|
This is a known issue (it's been discussed a few other times here on CodeProject as well), but not necessarily a bug (though one could argue it is). There's a lot of information about this on the web. Take a look at this one I grabbed from google: http://weblogs.asp.net/sfurman/archive/2003/03/07/3537.aspx[^].
Basically, it all comes down to precision. The article above has a link to some of the documentation in the .NET Framework SDK that indicates as much. There's also a cludgy work-around if you want to use that instead (using SqlDecimal.Round ).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thank, it's realy too an output from situations
|
|
|
|
|
Hey
We are doing a Client Server Program and have a problem.
We use:
TcpClient.GetStream
In the client we have a loop that checks the stream with formatter and if there is anything it is translated to a searten obj. When we are starting up an other window(the game) we pason the stream to another while loop in the game.
this works fine, but leter we get som problem, the stream is containing somtehing that we can not translate and that is cousing a error, somthing about instance not set to a object, but it is. The only thing the Server is sending is somthing cald commandobj. we have tryed to translate the stream content to a object and then se whats wrong, but it throws an error when we trying to dezerialize it.
If we look on the Stream during the run before the error we can see that there is a error on Position and lenght in the stream obj.
Now, how can vi flush the stream so its clean? the regular flush is doing nothing?
Best Regards
Jimmy
|
|
|
|
|
|
But will i not lose the connection then?
I need the stream, or do you mean that i shold creat a new stream of the TcpClient? and will this not break the connection?
Best Regards
Jimmy
|
|
|
|
|
I think the connection will be destroyed. So do just
yourStream.Flush();
GC.Collect();
or try to catch exception when your collection will close and then create new in exception handler...
xedom developers team
|
|
|
|
|
Of courcse it does. To not deatroy it do just
yourStream.Flush();
GC.Collect();
or try to catch exception when your collection will close and then create new in exception handler...
xedom developers team
|
|
|
|
|
Okay i will try that.
But when we tested just
MyStream.Flush();
the stream was not cleared, but i hope that GC vill do that. thought that GV just collect unused variables and threads, but i will look it up.
Thanks alot
//Jimmy
|
|
|
|
|
You should almost never call GC.Collect . Instead, just dispose the stream by calling it's Dispose member. This frees-up unmanaged resources and frees memory immediately so that garbage collection isn't even needed for that object. If you force the GC to run, it may take some time as it traverses its references and frees up everything. Let the GC do it's job, and just call Dispose if you don't want the stream anymore.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
It's possible that isnce you have two read/writers talking to the same stream they are corrupting the data. You should either use separate streams or lock against a resource (see the lock keyword for C# or the System.Threading namespace members). Even reading the stream advances the cursor so that if both read the stream at the same time, they get fragmented data. Writing would obviously be a problem if you didn't synchronize access to the stream.
If you look, there's also a ReaderWriterLock class in System.Threading that may be helpful as well, but you must still be mindful of the cursor being repositioned with each read and write to the same stream, even by different callers.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Look..
The Server haves a while loop, in this while loop we got a switch case, Before the switch we got the Dezerialize cod(one row) that Deserialize the stream object to a command object. After this the switch redirect the thread to right case, if it is where we waite on the object that the commad obj was telling us is on the way. It my be a update object or what ever.
When this is done it goes right up to Dezerialize row again there is waits on the next command that arrive.
The Client have something like the Servers loop.
This stream is also used to send obj by other controls in the client and server.
So Far:
We have loggd on to the server with somw clients, the clients can talk and act like thay shold.
When two clients is making a table to play the game on the head form is disposed, but the stream(TcpClient) is sent to the new game form, where we start a thread and goes in to a new loop, a game loop. So far, nor problems.
But now when we have playd we will start up the main form again, and this we have disposed so we start up a brand new and sends over the stream(TcpClient) from the game form and then dispos the game form.
Now we are back in main form. But when we goes in to the while loop that reads the stream for command obj we get an error, and it is this error we are trying to solve.
When we get in to the loop and the Dizerialize(stream) is used, it gives us an exception like: No instance.
But if we use a break point and step we could se that the stream is set to Read = tru, Write = true, and that the data(Long) is containing data that is to big , also there is some error on the position of the stream obj.
we have tryed to read this thing that is in the stream by casting it to simple object and then take a look in the objects type. But we get the error when it is trying to dezirilize it.
We thougt that if there is somthing in the stream buffert that is maby a bit of an old object or somthing we have to get this flushed, so we tested to use Flushed on the stream but the stream is steal containgn error like before.
How could we do ? we have thought of closing the connection and open a new stream, but we have to maintain the connection with the server at al time, otherwize the server will consider the client offline.
And if we got it right, we can not throw the stream and creat a new stream by TcpClient.getstream we will lose the connection with the Server int this case.
Best Regards
Jimmy
|
|
|
|