|
CString str(_T("abc"));
TCHAR* buff=str.GetBuffer(-1);
//is this okey to pass -1 to getbuffer if im not goin
//to modifiy the size the received buffer ?
|
|
|
|
|
I feel it should be
TCHAR* buff=str.GetBuffer(0);
suhredayan There is no spoon.
|
|
|
|
|
According to MSDN, -1 is not a valid parameter. What exactly is it that you are trying to do?
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
How to find a DLL's Memory Usage on run-time ?
thanks in advance
|
|
|
|
|
I believe the information you are after must be tracked through the owning application since the application's stack and heap are shared by the DLL. Unless there were internal counters in place within the EXE, I know of no way to distinguish between memory allocated by the EXE vs. memory allocated by the DLL.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Why my program runs more slower when it is built in Unicode mode which is supposed to be more faster?
Lisoft
|
|
|
|
|
lisoft wrote:
Why my program runs more slower when it is built in Unicode mode which is supposed to be more faster?
using unicode should not make your software faster, and should not make your software go slower either.
maybe you are spending (too much) time converting unicode strings to non-unicode strings, or vice-versa.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
This is not necessarily True.
MOST of the Win32 API calls involving strings that are used by an ANSI program have to first pass through interal code to CONVERT those strings to Unicode before calling the native UNICODE functions in the WIN32 API and then back into ANSI upon returning any strings. Microsoft has consistently stated that a UNICODE application with a lot of string processing towards WIN32 API function calls would be faster if it were built to use UNICODE.
So the question makes sense, why is it slower in UNICODE?
I don't really know why.
|
|
|
|
|
hi,
I just want to bring the application to system tray when it was minimized,
thanks,
suri
|
|
|
|
|
|
Thank you
|
|
|
|
|
Hi,
Please give me information about how to link between two projects created in a workspace in VC++.I am using project did in win32 cosole application.Where i can get information about these.
Nowshad.M.C
nowshadmc@rediffmail.com
|
|
|
|
|
I have a Distance Structure that includes Miles, Feet, and Inches. The user inputs these amounts 3 digits for miles, 4 digits for feed and 2 digits for inches. Not all of the time the user will input this number of digits, when the user doesn't input the full number of digits to display the output I need to back fill the numbers with zero's. Like 97 for miles would be display 097. I need some ideas on how to incorporate the back fill zero into a function. Thanks.
Thanks!
|
|
|
|
|
int i = 97;
TCHAR str[4];
_stprintf(str, _T("%03d"), i);
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
"my application is dialog base application"
and i using sample dll.
i execute this application..
following error appear...
i don't know this error type.
Debug Assertion Failed
Program:debug\My.exe
File:dbgheap.c
Line:1011
Expression:_CrtIsValidHeapPointer(pUserData)
Debug Assertion Failed
Program:debug\My.exe
File:dbgheap.c
Line:1076
Expression:_pFirstBlock(pHead)
Application Error
The instruction at "0x10008ba5" refrenced memory at "0xddddddf1":The memory could not be "read".
|
|
|
|
|
Your program is trying to free (or delete) a memory location that hasn't been allocated or has already been freed.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
my code here--------->
test.h
------
TEST_API void TestCStringArray(CStringArray* _testarray);
test.cpp
--------
TEST_API void TestCStringArray(CStringArray* _testarray)
{
_testarray->Add("test1");
_testarray->Add("test2");
_testarray->Add("test3");
_testarray->Add("test4");
}
============================================================
using dll code here------>
typedef void (*EXTERNAL_TESTCSTRINGARRAY) (CStringArray* _testarray);
EXTERNAL_TESTCSTRINGARRAY dll_testcstringarray;
CStringArray _testarray;
dll_testcstringarray(&_testarray);
for (int i=0;i<_testarray.GetSize();i++)
{
m_ist.AddString(_testarray.GetAt(i));
}
what i missing?
i don't know?
how can i solve this error???
|
|
|
|
|
Are your DLL and exe both using the same heap? If not your exe may be trying to delete a pointer on its heap which was allocated on the DLLs heap.
If you vote me down, my score will only get lower
|
|
|
|
|
can u tell me about heap..(memory allocate)
i'm just small programmer.
so,i can't handle.
how can i keep?
|
|
|
|
|
Basically, memory allocated by a DLL should be freed by that DLL (not by your EXE). And vice-versa.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
And therein lies the rub. What Roger was pointing out is exactly what's happening. When adding the CStringArray has strings added to it in the DLL, the guts of the CString s inside the CStringArray are allocated by the DLL. But then the CStringArray goes out of scope in the application, the app tries to free it from the heap. Hence, the error
By the way, this particular error can occur when you overflow an allocated block. Ten gallons of crap doesn't fit in a five gallon bucket (feel free to convert to liters ).
Bob Ciora
|
|
|
|
|
can i pass CStringArray from dll.
example...
CStringArray my(void)
{
CStringArray a;
---
a.Add("a");
a.Add("b");
a.Add("c");
a.Add("d");
--
return a;
}
i can not pass CStringArray from dll.
error C2558: class 'CStringArray' : no copy constructor available
i don't know.
how can i control CStringArray in dll?
|
|
|
|
|
vc-programmer- wrote:
can i pass CStringArray from dll.
Yes, by reference, as in:
void my (CStringArray& theArray)
{
theArray.Add ("a");
theArray.Add ("b");
...
return;
}
However, this won't fix the problem, since the contents of theArray will be freed by the client app and not by the DLL as they should. Consider offering another method in your DLL that will clear the CStringArray 's contents. Also consider building a static library instead of a DLL.
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
I want to use method below to manapulate database:but how can I get the specified interface ,for example:_ConnectionPtr.
IDispatch* pDispatch=NULL;
CLSID clsid;
CoInitialize(0);
HRESULT hr = ::CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(FAILED(hr)){return;}
CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IDispatch, (void **)
&pDispatch);
if(FAILED(hr)){return;}
thanks a lot
|
|
|
|
|
Click on 'My Articles' link in my signature and go to my BugReporter article. See described in the article how I use #import to use ADO in my app, or look at the comments posted below my article on how to use LIBID (if you're using VC7).
Better yet, BugReporter[^]
My articles
www.stillwaterexpress.com
BlackDice
|
|
|
|