|
No problem.
|
|
|
|
|
Hi, I have a large VB5 application that needs to be moved to .Net.
I am considering 3 options to upgrade the application.
1) Upgrading to VB6 first and then using the wizard to upgrade to VB.Net
2) Rewrite the application in VB.Net
3) Rewrite the application in C#
Does anyone have any advice for taking this application to .Net or have any experience taking a VB5 application to .Net.
Thanks
|
|
|
|
|
Take option 2 or 3. VB6 is a very different language, the upgrade tool plain does not work, nor can it.
Christian Graus - Microsoft MVP - C++
"I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )
|
|
|
|
|
The elegant approach:
1) Pick up the logic from the specs of the application or a bit of reverse engineering/study of the application.
2) Plan out the implementation in (3).
I don't subscribe to implementing in (2). It sucks.
|
|
|
|
|
|
Having worked with all I would go with option 3. Rewriting and then converting is going to give you a ton of errors that you may as well start from scratch. This will also give you the ability to look at .NET features to see what you can rewrite to make the program more robust and faster.
_____________________________________________
Flea Market! It's just like...it's just like...A MINI-MALL!
|
|
|
|
|
Depending on what kind of app you are wanting to make, I'd go with options 2 or 3. I usually use VB.NET because it is easy, intuitive, and quick to write. If you are going to make a robust, thorough, or big app, then go with C#. It is MUCH faster, especially with dealing with many numbers.
In summary, I personally would choose VB.NET, simply because I don't know how much better C# is. If you're a beginning or advanced programmer looking to build a medium sized or large app, use C#. If it's just a simple app, use VB.NET. It's easy and fast. Besides, usually you don't need the speed.
|
|
|
|
|
`Drew wrote: It is MUCH faster, especially with dealing with many numbers.
Since both C# and VB.NET compile to the same MSIL, there really isn't any difference. Care to back that statement up with a benchmark?
|
|
|
|
|
Well, it's not really a benchmark, but it may serve the perposes of making a point.
I have a project purchases program. Each time it loads, it goes off and gets > 45,000 records, sorts them, and conveniently displays them in a hierarchy. With C#, it doesn't matter whether you load the tables or not because each takes roughly the same time. With VB.NET, it'll take a few seconds to load the same database. Please note I coded nothing in either as Visual Studio does it all.
|
|
|
|
|
Designer generated code isn't necessarily the same. The only "proof" that would demonstrate this with any accuracy is if the database code was written by hand.
|
|
|
|
|
Dave Kreskowiak wrote: Designer generated code isn't necessarily the same.
Considering my part of the program is < 50 lines long (C#)(about 10 in VB.NET), it shouldn't matter, should it?
Dave Kreskowiak wrote: The only "proof" that would demonstrate this with any accuracy is if the database code was written by hand.
Of course it is. Is there any other way to do it?
|
|
|
|
|
There is no significant performance difference between VB.NET and C#. If you wrote two versions of the same app and one performs better than the other, then the most likely explanation is that you wrote the code differently.
I remember an example from way back when from Borland who claimed that Delphi was faster than VB and provided a benchmark that 'proved' it. But when you actually look at the code, they were comparing integer operations with floating point operations. Of course, integer operations are faster than floating point operations. Whether knowingly or unknowingly, their benchmark test was invalid.
Post your code here and I'll tell you what you're doing differently.
|
|
|
|
|
Similar to my last thread, I'd like to save the form location as well. In talking to another programmer, he said that it'd probably be a good idea to have some preventative measures (i.e.: making sure the program doesn't appear off-screen). Is there a good or bad way to do this?
|
|
|
|
|
Hi again,
Your earlier post was on size, and you can protect size with the Form.MinimumSize
property (it will refuse a Size that is less than that); just give it a reasonable
minimum with Visual Designer. You could also set a MaximumSize, but there is no need AFAIK.
As far as location is concerned, if Form.StartPosition is not set to Manual, you have no
control; and if it is, you are responsible; bad coordinates will be accepted but may put
it off-screen. So you may want to validate them, by comparing with (0,0) and
SystemInformation.PrimaryMonitorSize, assuming you only have one monitor.
With multiple monitors it gets complex easily.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Unfortunately, 95% of the people that will be using this program have 2 or more monitors (yes some have 3 and 4). It may be in my best interests to leave location alone and let Windows handle that.
Someday I'll figure it out...
|
|
|
|
|
well you can save the location as a point value in your settings.
my.settings.SaveLocation = my.settings.location
where SaveLocation is your variable.
|
|
|
|
|
IIRC on a multi-monitor environment, Windows puts every Form on the "primary monitor"
by default, and that might not be what you want.
If the desktop got extended over all monitors (that's a checkbox per monitor),
and if the monitors are arranged such that they (almost) cover a true rectangle,
then it makes sense to validate a form's bounds (thats location+size) against
SystemInformation.VirtualScreen
You may want to have a closer look at the Rectangle type, in particular Rectangle.Contains().
If the desktop does not extend over all monitors, then I don't know how forms get
positioned on those non-desktop monitors. Feel free to tell me more about that.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
Hi there,
this might be quite simple to do but i'm new to this, so what i would like to do is display the computers RAM as showing on the computer properties general tab, just under the processor info. i want to show as 512MB, rather than in bytes.
please help.
thanks
|
|
|
|
|
Hi,
these are the steps:
- get the size (you seem to do this with WMI), it will be a long 32-bit integer
BTW: I am C# programmer who prefers to use P/Invoke to call GlobalMemoryStatus()
in kernel32.dll, since I don't like WMI that much, it is slow for starters
- optionally: round it to a multiple of whatever seems appropriate
- divide by 1024*1024
- show it somehow (maybe as Label.Text)
You should get most of this working, then ask a detailed question if and when you're stuck.
-- modified at 17:47 Monday 6th August, 2007
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
What he said. (or she, just to be fair )
1024^2 turns out to be 1048576. What I did was take the straight value from My.Computer.Info.TotalPhysicalMemory and divide it by 1048576 and added Mb to the end. And there you have it.
|
|
|
|
|
Looks good, I forgot VB offers more info through My.Computer than the other CLR languages do.
BTW: I would not write 1048576 since that looks like a magic number, I really write 1024*1024
which meaning I trust is obvious for everyone, and is less error prone.
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
I usually assign a global variable to 1024^2, but I wrote this app before I started doing that (shortly after you posted your previous post )
|
|
|
|
|
What, in your opinion, is the best way to store/retrieve form sizes?
|
|
|
|
|
Luc Pattyn [Forum Guidelines] [My Articles]
this weeks tips:
- make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General
- show exceptions with ToString() to see all information
- before you ask a question here, search CodeProject, then Google
|
|
|
|
|
I'm trying to have a form that automatically saves it's size and state. I've got the state part down, but I now need the size part. If anyone has ideas for a form location part I'm open for ideas? Robust code would be nice
|
|
|
|