|
That really clears everything up! Thanks a MILLION for your help!
-untwisted
-untwisted
www.uber-ware.com
brian@uber-ware.com
|
|
|
|
|
A lot depends on what type of software you wish to develop. If it is games demanding lots of horsepower or any program that is heavily graphics based thatr requires larges amount of graphic speed, no, stay with C++.
If your applications are database driven, corporate type applications or just general utilities you will probably notice no diffrence other than it may take you a tenth of the time to create the application in C#/.NET than C++.
If you wish to see the speed of C#, you can download WebMatrix from ASP.NET. That is a free product from Microsoft that was built entirely from C#/.NET. Much of Microsoft's inhose development is switching to C# (or at least they latest Microsoft .NET show said they were).
Also, .NET applictions have a much smaller footprint. Large applications are usually under a meg and as long as someone has .NET installed that is all you need to ship. Makes it lightwieght to distrubute over the Internet.
There is yet another benifit, you can actual create Linux GUI applications using C# via the Mono Project.
Debugging cycle is extreamly shorter duration for applications of any size. I hardly even think about debugging anymore since I seldom find bugs after the initial building is complete. Not that I am such a great programmer, but there is far less to have problems with.
Another plus is that you can build web sites with the same coding you use for your Windows applications. You don't have to learn diffent languages and different APIs, you use the same .NET classes and the same language.
Distributed applications on the Windows platform are a pain. It is easy to remote your application across machines and use the horsepower of multiple machines.
Well, I have been working in C/C++ for over 20 years now and seven months ago I switched all my development to C#/.NET!
BTW, jobs are really starting to flow for C#/.NET programmers, one recently on Monster in Portland Oregon for 90K
Rocky Moore <><
|
|
|
|
|
Rocky Moore wrote:
Another plus is that you can build web sites with the same coding you use for your Windows applications. You don't have to learn diffent languages and different APIs, you use the same .NET classes and the same language.
This is not entirely true, system.windows.forms v/s system.web.ui, for example, the datagrid is different in windows ns then web ns.
please understand, according to Brian Valentine from MSFT, that one day everything will be managed code on the windows os, except device drivers and kernel code. you can find this in april 2003 edition of Windows & .NET Magazine, pg. 64 (second to last paragraph)
R.Bischoff | C++
.NET, Kommst du mit?
|
|
|
|
|
Soliant wrote:
This is not entirely true, system.windows.forms v/s system.web.ui, for example, the datagrid is different in windows ns then web ns.
Yes, I would have thought that would be obvious, there would be the natural seperation of type based on platform in that one is a Windows application and another is a web application that is stateless and thus controls and progamming logic for the presentation layer would be different in that fact, but still able to use all the base logic. You would still be using the same langauge and core for both unlike ASP where you would have to use scriptiong langauages or code down to IISAPI modules and have completely different core.
Of course there is an article on CP by Mark Clifton (I think it was) that uses a layout engine to run on eitehr ASP.NET or as a WinForm application using the same code.
In short you have the full power of .NET and C# for use in either web or Windows applications allowing most logic to be used by both. Now if they could do that for the client side of the browser
Rocky Moore <><
|
|
|
|
|
hello
here is a small problem that i am looking for some solution.
problem is :
how can i put the values in an html table (on a web page) into the table in a database (sql server or any)?
LOOKING FOR help.
ASIM
Asim
|
|
|
|
|
Can anyone give me a big picture of what configuration files(like Web.config files) are for? and how to use them?
Thanks a lot,
|
|
|
|
|
dear my love ones,;P
Say i have 2 buttons: btnDoSomeWork: implement taskX
and btnTryAgain: allow user to hit btnDoSomeWork
I run my program, and hit btnDoSomeWork , let it run taskX
Now I hit btnTryAgain, take some new input, and have user click btnDoSomeWork the second time.
This will make the 2 same taskX(s) run concurrently, which is not what i want.
Is there anyway to stop the first taskX when i hit btnTryAgain?
THANKS IN ADVANCE
|
|
|
|
|
Try running them in a separate thread. Then get the invoking method to abort the thread if it's running.
"Póg mo thóin!"
"I'm sorry but if they're gonna start talking to us about going to Uni and steering clear of drinking...then students bars shouldnt sell drinks for 50p"
Jonathan 'nonny' Newman
Homepage [www.nonny.com] [^]
Bob Chum Dev site [^]
|
|
|
|
|
Ok. After about 12 hours of trying to combine multiple assemblies into a single EXE, I am finally making some progress.
I ended up compiling each class into its own module (quite a pain). I am now trying to use al.exe to combine all of them. If I use the following command line:
al.exe ActionNotSpecifiedException.netmodule Arguments.netmodule ConsoleLogger.netmodule DirectoryUtils.netmodule FileLogger.netmodule FileUtils.netmodule ProgCommand.netmodule ProgInfo.netmodule ProgNotFoundException.netmodule InvalidCommandLineException.netmodule Logger.netmodule LoggerArrayList.netmodule LoggerManager.netmodule StreamWriterLogger.netmodule StringArrayList.netmodule TextWriterLogger.netmodule TimeOutException.netmodule ProgCommandRunner.netmodule /main:mesh.Prog.ProgCommandRunner.Main /out:ProgCommand.exe /target:exe
I can actually create the ProgCommand.exe executable. Except that it has to be in the same directory as the modules in order to run. So close, yet so far.
I also tried to combine everything in my make file with the following code:
$(DEST)\$(ASSEMBLY): $(METADATA) $(MODULES) $(DEST)
$(CSC) $(EXETARGET) /addmodule:$(MODULES: =;) /main:mesh.Prog.ProgCommandRunner.Main /out:$@ %s
which on the command line translates to:
csc /nologo /debug+ /d:DEBUG /d:TRACE /t:exe /addmodule:.\Arguments.netmodule;.\InvalidCommandLineException.netmodule;.\DirectoryUtils.netmodule;.\FileU
tils.netmodule;.\TimeOutException.netmodule;.\StringArrayList.netmodule;.\Logger.netmodule;.\LoggerArrayList.netmodule;.\TextWriterLogger.netmodule;.\ConsoleLog
ger.netmodule;.\StreamWriterLogger.netmodule;.\FileLogger.netmodule;.\LoggerManager.netmodule;.\ActionNotSpecifiedException.netmodule;.\ProgCommand.netmodule;.
\ProgNotFoundException.netmodule;.\ProgInfo.netmodule;.\ProgCommandRunner.netmodule /main:mesh.Prog.ProgCommandRunner.Main /out:.\ProgComma
nd.exe ..\build\AssemblyInfo.cs
However, this gives me the following error:
error CS1555: Could not find 'mesh.Prog.ProgCommandRunner.Main' specified for Main method
NMAKE : fatal error U1077: 'csc' : return code '0x1'
Does anyone have any idea what I am doing wrong? I have been trying to get this to work for quite some time. All I want to do is combine multilple projects into one executable.
Thanks in advance... (I hope)...
mike c
|
|
|
|
|
You cannot use a .NET module from the assembly it is contained in. Why not make one big assembly in the first place? Else you will have to go a long and painful route via IL.
<a TITLE="See my user info" href=http:
|
|
|
|
|
>Why not make one big assembly in the first place?
Because my code is broken up into different projects to make it more reusable.
I guess i could make one project that linked to all of the other individual files, but I just figured there would be another way to do it.
I have been rpetty surprised by how difficult this has been, and how little information i can find on it.
Thanks for the info...
mike c
|
|
|
|
|
There is an option if you want to make one big exe (unmanaged code will not work here) is to use IL Linker/Binder. Do a search on GotDotNet for it.
<a TITLE="See my user info" href=http:
|
|
|
|
|
mikechambers wrote:
Because my code is broken up into different projects to make it more reusable.
Why not take your reusable code and put into into DLLs? That way you just add a reference to your DLLs and they are pulled into your application. This allows you to keep the in different projects and still be used in any of your applications. Just change the type of your project from EXE to DLL for each of those extra projects and add reference in your main application.
Rocky Moore <><
|
|
|
|
|
I have been thinking about this. So i could just combine all of the DLLs into one DLL?
i.e. I would have one exe and one dll? The DLL would then load the EXE.
Would I have to change anything in the EXE or would it know to look in the new DLL?
thanks for the input. I am new to c# and thus am not familiar with how apps are usually deployed.
mike c
|
|
|
|
|
Well, actually, you have your program broke up in project right now. You would select the output to be a DLL for each of the projects which contains "supporting code". The project that has your main entry would be set as EXE output.
Assuming you have all your projects in one solution file, you would right click on the References item in your project that contains the EXE and select Add Reference. This will bring up a that should have three tabs and the last one being "Projects". The tab will list all the projects that are in the currently solution and you simply select the projects that you main application will need (probably all of them) and hit [Select] and then OK. That will bind those DLLS to your main application. Each project will produce on DLL and you will have your single main application (EXE). When you launch your EXE it will automatically load the DLLS as needed. Not one line of code to do it.
You might try just creating a new solution with a single WinForm Windows application. Then Insert another project into the solutions but this time use the "Class Library" project. That will build your skeleton project already set as a DLL. Then in the class it generates simple put a single method in there ( that does:
public static IAmHere(string message)
{
System.Diagnostics.Debug.WriteLine(message);
}
Right click on you main WinForm project on references and selec the Add References and add the project reference to the Class Library project you created.
After that, add in your main form, like in the constructor, a call to your library class you created and the IAMHere function your added to it like:
TheClassICreated.IAmHere("Yep");
This will call the method that is in the class library dll you created. To your application it does not care if it is in a DLL or the main application, it calls the same in either case. The only thing you need to do to let your application use the code as if it is in the main application is to add the reference to the project.
In the old C++ days, I did not bother with DLLS unless I had to. In C# they are so easy to use, I end up with a dozen or more of them in a sizable application. I build librarys of utility classes, wrappers to controls, abstraction classes for abstracting data, simply popup forms for quick data input, and tons of other things. I put each into a root namespace and then create others similar to the .NET namespaces (like MyLibs.Windows.WinForms for my control wrappers or MyLibs.IO.Data for my data abstraction routines). It is just a method to organize the classes so that I can find them easily without innermixing them with the standard classes.
When you add a reference to main exe project it will usually copy the dlls to your output directory. You can specify if you want them copied or not. I usually have them copied.
Also, with DLLs in .NET you do not have the linkage problems you do with C++.
Rocky Moore <><
|
|
|
|
|
Thanks for the info. This is actually exactly how I have my solution set up, and as you point out, it creates multiple dlls and and EXE.
I was trying to find a way to then include all of those in one file, so I don't have to distribute all of the DLLs seperately.
thanks again for the suggestions...
mike c
|
|
|
|
|
I have been working on this problem but still no satisfactory result, so i hope someone could help me out here.
I have a RichTextBox and and its width is fixed. When i input some text to it at runtime, i need to dynamically adjust the height of this rich text box so that all the text are visible, but no scroll bars are to be used.
Anyone have any ideas??
Weiye, Chen
When pursuing your dreams, don't forget to enjoy your life...
|
|
|
|
|
public bool InitializeGraphics()<br />
{<br />
try<br />
{<br />
PresentParameters presentParams = new PresentParameters();<br />
presentParams.Windowed=true;<br />
presentParams.SwapEffect = SwapEffect.Discard;<br />
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);<br />
device.DeviceCreated += new System.EventHandler(this.OnCreateDevice);
this.OnCreateDevice(device, null);<br />
return true;<br />
}<br />
catch (DirectXException)<br />
{ <br />
return false; <br />
}<br />
}
Why do we need to subscribe to the DeviceCreated event in this situation? enlight me, thanks in advance
|
|
|
|
|
wingcom wrote:
Why do we need to subscribe to the DeviceCreated event in this situation? enlight me, thanks in advance
Not from the dumb example from MSDN... WHy do they bother at all? Its the only reason I havent touched any 3d stuff.
SO, you dont really need it, unless your 3d device will be resetting and you need to be notified of this.
<a TITLE="See my user info" href=http:
|
|
|
|
|
Hello again.
I have 2 related tables in an Access DB:
MainTable --------> RelatedTable
^
^ ^
(one) to (many)
The typed DataSet is filled properly and then a DataGrid takes responsibility for displaying the information. Everything works perfect. I get the "+" link to navigate to the RelatedTable, and the data is displayed accordingly.
Now, I need to display in the "child" DataGrid (the one that opens after you click the "+" link) not only the related data, but also some other data from the same RelatedTable (but not related to the MainTable).
Can this be accomplished through the "child" DataGrid, since the initial purpose of such a mechanism is to display only the related data from a child table?
|
|
|
|
|
I have this nice code
<br />
Microsoft.Office.Interop.Outlook.ApplicationClass app;<br />
<br />
private void button1_Click(object sender, System.EventArgs e)<br />
{<br />
foreach(Microsoft.Office.Interop.Outlook.Reminder reminder in app.Reminders)<br />
{<br />
listBox1.Items.Add(reminder.Caption+" @ "+reminder.OriginalReminderDate.ToString());<br />
} <br />
}<br />
<br />
private void Form1_Load(object sender, System.EventArgs e)<br />
{<br />
app = new Microsoft.Office.Interop.Outlook.ApplicationClass();<br />
}<br />
But I need some code to get the outlook tasks too, someone can help me?
I couldn't find it anywhere.... only the TaskItemClass and the Interface TaskItem
Greetings....
|
|
|
|
|
I am creating a msi installer for a command line program I have
written in c#.
I would like the user to be able to just type the program name from
anywhere on the file system, and have the program run.
Basically, I need to alter the PATH environment variable to include
the installation directory. I have spent some time looking for
solutions, and I haven't been able to find any thing definitive.
Options I have found include:
-Editing the registry from the installer: requires reboot, and deletes
entire path variable on uninstall.
-calling a Custom Action DLL to edit the path. DLL must be written in
c++ (is that correct?). Can't uninstall?
-write a vbs script to be run by the installer and set the path. (I
don't know VBS script)
-provide instructions to the user to tell them how to edit their path
: not very user friendly.
However, none of these seem like good options. I understand some of
the reasons why setting an environment variable is not really a good
idea, but surely this is something that needs to be done quite often.
So, any suggestions or ideas?
mike c
|
|
|
|
|
The Windows Installer Environment table has a good solution for setting environment variables, but unfortunately the Visual Studio deployments projects don't give you a way to author entries in the appropriate table. You'll have to use some other tool to author that part of your setup.
If you've got money to spend, there are several more sophisticated setup packages that give you a GUI authoring tool and access to this.
I've also done things like this by using the Orca tool (part of the Windows Installer SDK portion of the Platform SDK) to create a merge module (.MSM file) which I include into a setup otherwise authored in Visual Studio's deployment project tool. This will take you more learning & effort, but it's a free download
Burt Harris
|
|
|
|
|
Thanks for the tip.
So, I would basically create some seperate code (in c#?) which would manipulate the environment variables using the Environment Table.
Basically, I want to add my application install directory to the path during installation, and remove it if the app is uninstalled.
Btw, I jsut download and installed the SDK you mention above, but I cant seem to find the orca tool you referenced.
thanks for the leads...
mike c
|
|
|
|
|
mikechambers wrote:
So, I would basically create some seperate code (in c#?) which would manipulate the environment variables using the Environment Table.
The easiest way would be to use Orca to add the environment variables to the Environment table of your Windows Installer database after you create it with the VS .NET deployment thing.
mikechambers wrote:
Btw, I jsut download and installed the SDK you mention above, but I cant seem to find the orca tool you referenced.
Are you sure you installed the Windows Installer section of the Platform SDK? Because I have it on my computer in the Program Files\Orca9x directory (for you it would be Program Files\OrcaNT, I believe). Note that it is not in the Microsoft SDK\bin directory, but the installer for it is there.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|