|
I want to save an image to a MySQL database. I think I need to use a MemoryStream to do this. Here is a sample that doesn't work:
Bitmap ^ MyImage;
MyImage = gcnew Bitmap(pictureBox1->Image);
MemoryStream ^ MyStream = gcnew MemoryStream;
MyImage->Save (MyStream, System::Drawing::Imaging::ImageFormat::Jpeg);
String ^ InsertString;
InsertString = String::Format ("insert into blobtest (blobtest) values ('{0}');", MyStream->GetBuffer());
MyStream->GetBuffer() just returns "System.Byte[]", not the actual data, which is what I want. You can see what I'm trying to accomplish here. Why isn't it working?
|
|
|
|
|
You cannot pass this type of data using SQL injection. You need to create a database parameter and set it to the value of your MemoryStream before executing your insert.
|
|
|
|
|
Can someone tell me why the System::Web::UI stuff was left out of C++/CLI? Not like we couldn't use C++/CLI to write some web components or anything!
And just because C++/CLI doesn't support partial classes?? So what! Why can't we use C++/CLI to develop web sites!
ed
~"Watch your thoughts; they become your words. Watch your words they become your actions.
Watch your actions; they become your habits. Watch your habits; they become your character.
Watch your character; it becomes your destiny."
-Frank Outlaw.
|
|
|
|
|
You can use C++/CLI to develop web sites! You can access C++/CLI assemblies without any problems as far as I know. Furthermore, System::Web is accessible!
-- modified at 18:54 Tuesday 14th February, 2006
|
|
|
|
|
You don't have access to System::Web::UI at all. Not even included in the release. Kinda like a book with a few chapters left out!
So yes you can use C++/CLI assemblies but with restrictions for what you use them for.
ed
~"Watch your thoughts; they become your words. Watch your words they become your actions.
Watch your actions; they become your habits. Watch your habits; they become your character.
Watch your character; it becomes your destiny."
-Frank Outlaw.
|
|
|
|
|
What version of Visual Studio do you have?\
|
|
|
|
|
VS 2005 Pro
ed
~"Watch your thoughts; they become your words. Watch your words they become your actions.
Watch your actions; they become your habits. Watch your habits; they become your character.
Watch your character; it becomes your destiny."
-Frank Outlaw.
|
|
|
|
|
According to Nishant Sivakuma, and I quote him: "For inline code and for code-behind, you have to use either C# or VB (both are similar languages). But you can put most of your core code in managed or mixed-mode DLLs written in C++." This was taken from the Visual C++ Language Message Board on msdn.microsoft.com.
Also, after referencing the System.Web.dll, I was able to access a few web controls and process their data using a C++/CLI assembly.
-- modified at 21:39 Wednesday 15th February, 2006
|
|
|
|
|
Here is a trivial example:
// AspCppCli.h
#pragma once
#using <System.Web.dll>
using namespace System;
using namespace System::Web::UI::WebControls;
namespace AspCppCli {
public ref class CppCliTest
{
public:
void InsertGreeting(TextBox ^% tb)
{
tb->Text = "Hello, World!";
}
};
}
-- modified at 22:10 Wednesday 15th February, 2006
|
|
|
|
|
AH!
#using <System.Web.dll>
That makes a difference!
But! Still my point....why do we have to do that!
Thanks for getting me going!!
ed
~"Watch your thoughts; they become your words. Watch your words they become your actions.
Watch your actions; they become your habits. Watch your habits; they become your character.
Watch your character; it becomes your destiny."
-Frank Outlaw.
-- modified at 16:16 Thursday 16th February, 2006
|
|
|
|
|
Actually, I feel just like you about this. This kind of makes C++/CLI a second class citizen of managed code.
|
|
|
|
|
Hi,
I need to implement the multi-threading using C++(Not VC++). What are the options available fot it.
Thanks in advance.
Regards
Mahesh
|
|
|
|
|
|
Actually, I wonder why there is no C++ forum here. If he posts the same question in "Visual C++" forum, people will complain that it is not Visual C++ question. If he posts it in here, people still complain that it is not a Managed C++ forum. Poor C++ programmers...
As to the question, you have to use _beginthreadex and _endthreadex. These functions are in C++ standard library and they know how to free the resources of your threads. Don't use beginthread and endthread because they are obsolete. Neither should you use windows CreateThread and ExitThread because Win32 functions don't know about C++ library and may not be able to free the resources adequately.
As a reference I would recommend Jeffrey Richter "Programming Applications for Microsoft Windows". He talks about multithreading, multiprocessing, memory structure (very interesting things like Address Windowing Extensions), exceptions, and other useful stuff. It may be difficult to find this book though. Amazon does not sell it any more.
|
|
|
|
|
RainbowWyrm wrote: I wonder why there is no C++ forum here
the question is legitimate.
consider the fact though that you are on CodeProject on a web site dedicated to the Microsoft development technologies... (Visual Studio, etc...)
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
Yeah, but sometimes, you got to stay platform-independant while still working in Visual Products (though that kinda limits you to C++).
For starters: I got MS VC++ 2005 Express. I use it to develop a OpenSource-Qt freeware tool.
If I have Qt-questions, I AM gonna ask them in a Qt-Forum, but if I am stuck with VS-Problems or Standard-C++ issues, I'd rather ask on CodeProject.
|
|
|
|
|
Sebastian Schneider wrote: if I am stuck with VS-Problems or Standard-C++ issues, I'd rather ask on CodeProject
yeah... that's what the Visual C++ forum is for...
C++/CLI forum is for managed C++ (you know, thet stufs for the .NET framework....)
TOXCCT >>> GEII power [toxcct][VisualCalc 2.20][VCalc 3.0 soon...]
|
|
|
|
|
Hi All,
Can anyone tell me where is the memory allocated for a function?. Consider the following example
class A
{
int a;
int b;
void f1();
};
void main()
{
A obj1;
}
Now, in this case, assume that for variable 'a' the address would be 5000 and for 'b' it would be 5004. These 2 varialbes are present in the stack. Now, where does my function lie. Is it placed in the stack? or somewhere else. How do I find the address of the function and know as where it is placed?
can anyone help me on this.
|
|
|
|
|
The code for functions is in the executable, there isn't a separate copy for each instance of a class.
You can get the address of a function like this:
void (A::*pfn)() = A::f1; // or &A::f1 in newer compilers
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Hi Mike,
Just as a follow on question, you say that there isn't a separate copy for each instance of the class. From my limited understanding of such things, when you create a new instance the run-time creates a new bit of memory to store the class variables. I thought under this it also creates a new code segment for that object. Am I wrong?
Also if there is only one code segment per class, what happens when you have two threads that access two different objects, surely you would have a confict of accessing the same code at the same time?
regards,
Rich
"Programming today is a race between software engineers striving to build bigger and
better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far the Universe is winning." -- Rich Cook
|
|
|
|
|
No, code is not created on the stack. The code is already in the executable.
Multiple threads can run the same code simultaneously, all the CPUs are doing is reading memory and executing the instructions they find. The code itself can do non-thread-safe things, but that's a separate issue.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
I am not 100% sure, but I believe that the compiler will create a "structure" in the stack, which contains a, b and pointer to the function. The actual function code is in the "instruction set" section of the executable. In general, the class maps into something like this in the stack:
<this> points to a structure which contains the following entries:
[0] Pointer to the virtual function table
[1] First variable
[2] Second variable
...
[N] Pointer to the first non-virtual function
[N+1] Pointer to the second non-virtual function
...
Pointer to the virtual function table points to the structure of pointers to individual virtual functions.
This binary structure of the class is undocumented because it allows you to access private class members through <this> pointer, thus, violating incapsulation. There is also an issue with data alignment of variables a, b, ... when you try to read variables a, b, etc using pointer <this>. There is no problem if they have the same type, that is the same memory size. Otherwise the alignment freaks out depending on the order of integers, doubles, strings etc in which you declared those in the class. I hope this helps.
|
|
|
|
|
Is C++/CLI faster than C#, or do they both convert to the same intermediate code to be run by the .net framework?
|
|
|
|
|
While all CLI compilers generate MSIL, the C++ compiler generates optimized MSIL in some cases (something that none of the other managed languages do). How effective this will be depends on whether the IL optimizations result in improved JITing.
And you can always speed up specific blocks of code by cheating and using #pragma unmanaged
Regards,
Nish
-- modified at 20:16 Monday 13th February, 2006
|
|
|
|
|
Thanks.
I have been thinking about writing a C++/CLI library for some of the spherical trigonometry functions in my planetarium program to speed it up.
|
|
|
|