|
Hi,
I need to call a function written in C# from the unmanaged code.
The code from where I have to call the function is purely written in VC++ and it come in the unmaged part of the solution code.
Most of the solution is written in C# .NET 3.5.
Please help me out.
Thanks In Advance
Abbas
|
|
|
|
|
So you need P/Invoke, make sure any objects (arrays) you pass get properly pinned, and pass a delegate. All you need should be in my article here[^].
|
|
|
|
|
To call the method directly, you're realistically limited to using COM. This means you need to expose you .NET object as a COM object and import the type library into your VC++ application.
"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
|
|
|
|
|
Hi,
I am downloading a binary document from sql server and depending upon my file extn it should either open doc txt or image.For txt it is working fine while for word it is saying"Word experience an error in opening the file".While for jpg image viewer is opening but no image is there
What could be the reason
I am using windows application in C#
|
|
|
|
|
Looks like your file is not getting downloaded completely.
Post some code here - maybe someone can help you.
|
|
|
|
|
if (dt.Rows.Count > 0)
{
result = (byte[])dt.Rows[0].ItemArray[0];
filetype = (String)dt.Rows[0].ItemArray[1];
}
String new_FileName = Path.ChangeExtension(Path.GetTempFileName(),filetype);
File.WriteAllBytes(new_FileName, result);
System.Diagnostics.Process.Start(new_FileName);
THis is my code
i will get bytes in result array and filetype also.SO depending on that I am opening the file to display the data
|
|
|
|
|
In my case the same is working properly but I am using dt.rows(0)("FieldName") instead of Itemarray . May be there is problem while saving it into database.
|
|
|
|
|
I use coloumn name also .But same happening.
|
|
|
|
|
Hey ,
i found the solution.My data type that i put is binary so there is a limitation to the size.You have to put the type as image then size wont be a probs.So fix the solution.thanks for al the help;
seeism
|
|
|
|
|
Hi,
Instead of opening the binary data from db in a file is it possible to store this in a file in some locations given by the user.
Like if my binary file is a doc file i should store that file in some location say c:\file.doc.
seeism
|
|
|
|
|
What? you want to copy the file in a diff location? Just copy the file in a specified location using IO.File.Copy
|
|
|
|
|
Hi,
I got the file in binary format from db.Now i want to save this file in some location given by the user by a file save as dialog option without opening it.
String new_FileName = Path.ChangeExtension(Path.GetTempFileName(), filetype);
File.WriteAllBytes(new_FileName, result);
FileDialog fldlg = new SaveFileDialog();
fldlg.InitialDirectory = "c:\\";// @" \";
fldlg.Filter = "*.jpg|*.gif|*.txt|*.doc|*.pdf|*.htm";
fldlg.FileName = filename;
This is my code.I did like this
But file is not saving
|
|
|
|
|
What exactly you are trying to do?
SaveFileDialog doesnt saves anything. It only shows the dialog box.
You need to use fldlg.ShowDialog to show dialog and ask user to select a filename.
Then you need to copy the file into its new location specified by user using system.IO.File.Copy(new_FileName, fldlg.FileName) or sort of.
|
|
|
|
|
Thanks a lot.I didnt copy the code for showDialog.I was using some stream and all and it wasnt worked.I changed the code now using File.copy and it is working fine.thanks a lot
|
|
|
|
|
hi,
I have already posted the message in this link : http://www.codeproject.com/Messages/3532775/exe-update.aspx[^]
but a few more clarifications needed,
I have developed one windows application which is installed in more than 500 machines using setup and deployment process(.exe or .msi). Now i have made some alterations in my appliacation so that i dont want to reinstall it again. Is there any way to do, that when i change the code here it should refelct in all the machines silently....
|
|
|
|
|
AFAIK, there is no way to do this now.
As was recommended earlier, Clickonce Deployment can help you achieve automatic updates.
|
|
|
|
|
You are going to have to redeploy everytime you release the project.
There are ways to automate this, the easiest is to design a very simple wrapper that checks for updates and installs if nescessary, then launches the main program.
Panic, Chaos, Destruction.
My work here is done.
or "Drink. Get drunk. Fall over." - P O'H
|
|
|
|
|
Thanks for your reply,
Can you provide me with some samples
|
|
|
|
|
I have a database table that is bound to a report. One of the fields is an Int32 type that stores the id of a jpg image. This has been done to reduce database storage.
I know I can create a runtime column and fill it with the appropriate images but there's a performance issue with that. The images are fairly large so I would like to store them as a WeakReference. (Or some kind of dynamic access)
Can anything be acomplished along this line? Anything!
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
Check out the Low impact images article by Pete O'Hanlon. It's neat.
Also check out Sacha's reply/message.
Should help in the Weak Reference
I bug
|
|
|
|
|
Hi everyone. My question is quite simple. I would like to know how exactly you would handle multiple types of exceptions in a method. Is this correct:
try
{
}
catch (FileNotFoundException fnf)
{
}
catch (ArgumentNullException ane)
{
}
catch (SomeException se)
{
}
I know it works. However, is that the best way to do it? I am asking because the exceptions that are thrown by different file operations, such as File.Open, are quite different from the types thrown by MessageBox.Show, for example. Or should I perform file operations and catch exceptions then perform other operations and catch their exceptions and so on?
Thanks in advance!
|
|
|
|
|
My approach has always been to do as much of mine own validation as possible. This prevents try/catch nesting that you've described.
For example, perform your own validation on the filepath and throw one ArgumentException:
try
{
if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
throw new ArgumentException("A meaningful message goes here...")
}
catch (Exception ex)
{
The mind is like a parachute. It doesn’t work unless it’s open.
|
|
|
|
|
Alright, thanks for the timely response. I understand what you're saying. What about other operations that I can't check beforehand, such as UnauthorizedAccessException? If it can't be detected by something such as "string.IsNullOrEmpty(string)" or any other safety statement should I catch the appropriate exception then?
|
|
|
|
|
Hi,
IMO there is no best way, you should do whatever you think fits the functionality. Say it is all part of a method saving a user document, and all you want to obtain is, when things go wrong, you can tell the user the save operation failed and give some indication as to what caused that. Then you might do a simple catch(Exception exc) and communicate the problem.
OTOH if you're going to try and resolve several possible problems, each in their own way, you would need to have separate catch blocks. Whether they go with a common or several separate try blocks again is your choice.
BTW: Coincidentally I'm in the middle of writing a little article on exception handling right now!
|
|
|
|
|
Haha, I'll check the article out when it's up if you'll post a link.
I typically just want to tell the user that a failure occurred. But I also want to specify WHY it occurred. (eg. "You do not have permission to access this file.", from catching "UnauthorizedAccessException"). Should I avoid trying to provide the reason and just display a message that an error occurred? And maybe log the details to a file?
|
|
|
|