|
hi;
how can i input voice in a c++ program through microfone and is there any way that i can control my program written in c++ to work with voice commands....i really need detailed help........thanx
|
|
|
|
|
Ok, here's what must be the stupidest question on the board, but I have to ask.
I'm trying to migrate from C++ (VC6) to the new .NET style of managed C++.
I'm trying to enumerate any/all NIC cards on the sytem and get a list of valid IP addresses using System:ManagementClass object
At one point in my code I'm calling:
<br />
ManagementObject * mo = new ManagementObject(); <br />
mo->get_Item("IPEnabled")<br />
Now the question
This Get_Item() function returns a system object pointer. As I debug and step through my code, I can see this pointer does indeed point to an object which toggle between "true" and "false"
What I'm trying to do is simple:
<br />
if(mo->Equals(true))<br />
{<br />
GO DO SOME STUFF<br />
}<br />
That if statement does not compile. calling Equals(false) compiles but always returns "true" (I guess because mo is not a NULL pointer) How do I test the value of a generic system object to see if it's "value" == true or false?????
This seems like it should be so simple, yet is turning out to be so hard is embarrassing. Can anyone point me in the right direction??
Phrustrated Phil
|
|
|
|
|
Phil C wrote:
What I'm trying to do is simple:
if(mo->Equals(true))
{
GO DO SOME STUFF
}
What you are doing there is totally absurd! A ManagementObject can NEVER EVER be a Boolean.
Now if you are doing as you did originally, AFAIK you just need to unbox the return object pointer. EG
if (__unbox(mo->get_Item("IPEnabled")))
{
}
leppie::AllocCPArticle(Generic DFA State Machine for .NET);
|
|
|
|
|
Oops, I wrote it wrong while trying to trim away all the fat and make it legible.
What I'm trying should have read:
<br />
Object *booltest = mo->get_Item("IPAddress");<br />
<br />
if(booltest)<br />
{<br />
DO STUFF<br />
}<br />
<br />
if(booltest->Equals(true))<br />
{<br />
DO STUFF<br />
}<br />
<br />
Basically the entire mo->GetItem("IPEnabled") was originally inside my if statement (like you wrote) and I was (trying to) break it down into pieces to determine where I was going wrong.
Thank you for telling me I'm totally absurd. I was really hoping someone like you would tell me how stupid I am even though I admitted right up front that this is a pretty embarrassing question.
I think you did point me to the key statement though. I haven't figured out the whole box/unbox theory yet. For that I do thank you sincerely.
Less Phrustrated Phil
|
|
|
|
|
If I declare a variable as
Int32 arr[] = __gc new Int32[100];
and I have a legacy function which takes a int * and count, is there any way to pass arr and 100 to that function? I'm thinking something along the lines of
Int32 __pin *ptr = arr;
f(ptr, 100);
Will this work? I mean arr is actually pointing to a System::Array, right?
READIN writin rhythmetic
|
|
|
|
|
Jeremy Osner wrote:
I mean arr is actually pointing to a System::Array, right?
arr is pointing to a class derived from System::Array.
|
|
|
|
|
Right -- so is there any way I can get an interior pointer to the memory that implements the array?
READIN writin rhythmetic
|
|
|
|
|
Yes!! I have found the solution at MSDN -- I pin the pointer to the first element of the array.
READIN writin rhythmetic
|
|
|
|
|
|
> __int32 __pin * ptr = (int*)&array[0];
Why do you put that (int *) cast in? The line compiles without the cast -- I would think the cast would generate a compiler error -- can't convert a __gc pointer to an unmanaged pointer. No?
READIN writin rhythmetic
|
|
|
|
|
Jeremy Osner wrote:
Why do you put that (int *) cast in? The line compiles without the cast --
&array[0] is of type (void*) . I just assumed C++ would complain Normally I would just do a void __pin * ptr, and cast at function invocation.
leppie::AllocCPArticle(Generic DFA State Machine for .NET);
|
|
|
|
|
If array is declared as Int32 array[], then the type of &array[0] is either Int32 __value * or Int32 __gc *, I think the first. You are taking the address of an element of the array, which will have whatever type you used in the array declaration.
READIN writin rhythmetic
|
|
|
|
|
Jeremy Osner wrote:
If array is declared as Int32 array[], then the type of &array[0] is either Int32 __value * or Int32 __gc *, I think the first. You are taking the address of an element of the array, which will have whatever type you used in the array declaration.
But alas, C does not care, all it wants is a pointer to expected data.
leppie::AllocCPArticle(Generic DFA State Machine for .NET);
|
|
|
|
|
Does anyone know how to get rid of this warning? I see it any time i compile a new Class Library.
rechi
|
|
|
|
|
I just ignore it since there are always bigger fish to fry.
Search yeilds the following:
'The linker was unable to find your .pdb file. Copy it into the directory that contains object/library.
To tell is your .lib and .pdb are properly matched:
Extract an object file from the library with lib /extract:objectname.obj xyz.lib.
Check the path to the .pdb file with dumpbin /headers objectname.obj'
I read that and decided if it ain't broke don't fix it.
pod
|
|
|
|
|
chassisman wrote:
I just ignore it since there are always bigger fish to fry.
This is so... true
Thanx for the info.
rechi
|
|
|
|
|
Hi all
i am writing a custom control derived from UserControl in ManagedC++.This class is using third party unmanaged C++ classes(from VTK library) internally.
When i tried to build the control i got the following following error.
D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ObjIdl.h(7408): error C2872: 'IDataObject' : ambiguous symbol
Please somebody help me how to get rid of this error.
Thanks in advance
Regards
Kriohna
|
|
|
|
|
Usually this error happens when the compiler is not able to determine which symbol you are refering to. A typical example is when you have two methods with the same name but defined in diferent namespaces used in the project. If this is the case try to use full namespaces when refering to them.
|
|
|
|
|
I want to deliver my DLL which was written in VC++.net. I use CStringT extensively. When I try to run my DLL in a C# application in another machine which did not install Visual Studio.NET . It give exception problem.
How do I pack the ATLMFC in VC7.0?
I do not want it to be statically link because I had tested before and it give me problem saving some GDI32 functions is already in some of my other lib. Also I do not want my app to be bulky.
So, I would prefer dynamic bind. Where and how to get MFC7.0 redistributable?
Thank you
|
|
|
|
|
My answer to my own question (in case someone interested)
You will need this DLL
- msvcr70d.DLL
and other .NET redistributables
Sonork 100.41263:Anthony_Yio
|
|
|
|
|
Hi All
i am wrapping up a MFC custom control in Managed C++ by subclassing it.
I am having enum type in MFC which i want to expose to outside via Wrapper class.So i defined equivalent enum type in managed C++.How can i type cast from ManagedC++ to unmanaged type?Is there any otherway to avoid this redefinition?
Thanks in advance
Krishna
|
|
|
|
|
How about this:
namespace oldCpp
{
enum { myfirst = 0, mysecond };
}
public __value enum newMCpp { myfirst = oldCpp::myfirst, mysecond = oldCpp::mysecond };
Then you could do something like:
int oc = (int)newMCpp::myfirst;
Untested, but should hopefully get you started.
[edit] wrapped first enum in namespace. Learned this in another post in the VC forum. [/edit]
Hope this helps,
Nathan
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
I noticed my program was leaking memory at a huge rate -- went in and did some debugging and it seemed pretty clear that managed memory was never being deallocated. After fretting for a while over why this should be so, I added a call System::GC::Collect() under certain circumstances. With this call in, there is no leak. Why shouldn't the gc have been collecting on its own -- isn't this the whole point of garbage collection?
READIN writin rhythmetic
|
|
|
|
|
The garbage collector in .NET is a lazy collector. What this means is that it will not collect until it needs to. Only when memory is getting low, will it collect.
Check the MSDN for more info.
-Nathan
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
Thanks, I guess I just wanted it do happen a bit before it would by default -- are there any caveats I should be aware of afa using GC::Collect()?
READIN writin rhythmetic
|
|
|
|