|
awah wrote: how do i solve this problem?
By ensuring that Buffer is terminated. There are two ways of doing this. Either call ZeroMemory() or memset() before calling WriteFile() , or terminate Buffer at the point equal to the return value of WriteFile() .
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
The first sentence is correct. The second two incorrect for the code in the original question.
The problem occurs because of the locally declared char Buffer[1024]; and the InternetReadFile(handle, Buffer, sizeof(Buffer), &dwRead). The given Buffer in fact cant be terminated without potential loss of characters read because it has been potentially completely filled by the InternetReadFile. To correctly terminate the Buffer for later appending to a CString would require a Buffer[dwRead] = '\0'; where for most iterations of the loop dwRead = 1024, which would either invalidate one of the other local variables or corrupt the stack in some other way.
The correct way would be InternetReadFile(handle, Buffer, sizeof(Buffer)-1, &dwRead) and then a Buffer[dwRead] = '\0'; inside the while loop.
|
|
|
|
|
Hi,
I am creating and deleting MFC gdi objects and watching the number of GDI Objects that application uses via Windows Task Manager.
When i create a CBrush object by CreateSolidBrush i observe an increment in GDI Object count of application. However when i delete the brush by DeleteObject there happens no change.
I create an MFC Dialog Application, add two buttons and two handlers for them. And a CBrush* member.
Here is the functions that handles button clicks:
// m_pBrush is a member CBrush*
void CBrushSampleDlg::OnBnClickedButtonCreate()
{
m_pBrush = new CBrush;
m_pBrush->CreateSolidBrush(RGB(155,0,0));
}
void CBrushSampleDlg::OnBnClickedButtonDelete()
{
m_pBrush->DeleteObject();
delete m_pBrush;
}
Thanks
Febil
|
|
|
|
|
|
i have visited rtslink.com and download xml tags evrything finished
i will describe the scenario
actaully we need tally software it should run behind the code but simply minimise our window and then we have specific xml tags available on rts link .com
eg.group.xml
and then there are some functions rtsopen,send ,getlasterror message
thats the problem with me
pls give clear definition and send some sample code in c#.net
|
|
|
|
|
Please stop spamming the C++ forum with C# related questions. And use the modify button instead of posting 3 messages in a row.
|
|
|
|
|
Please do not create more than one thread for a single problem. And more over this is a VC++ forum.
|
|
|
|
|
hi i m working in asp.net and using c#language..
|
|
|
|
|
This is VC++ forum. Plzzz move to asp.net forum.
Come online at:-
jubinc@skype
|
|
|
|
|
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Its very good but do you have any question about c++?
|
|
|
|
|
how to import data to tally from xml ?
i have tally software
and rts.dll file but it could not be opened..
pls provide some suggestions and code
|
|
|
|
|
I have sound knowledge of Class Template & Function Template.
But I was trying to write a class as follows,
<br />
class CProg<br />
{<br />
int val;<br />
public :<br />
void SetVal(int y);<br />
template<class T><br />
void AddValues(T a, T b);<br />
};<br />
void CProg::SetVal(int y)<br />
{<br />
val = y;<br />
}<br />
<br />
template<class T><br />
void CProg::AddValues(T a, T b)<br />
{<br />
T x = a+b;<br />
}<br />
<br />
void main()<br />
{<br />
CProg prog;<br />
prog.SetVal(9);<br />
}<br />
Above code works well. But when I change main(0 as follows,
void main()
{
CProg prog;
prog.SetVal(9);
int a,b;
a = b =8;
prog.AddValues(a,b);
}
It gives compile-time error as,
Failed to specialize function template 'void __thiscall CProg::AddValues(T,T)'
With the following template arguments:
'int'
|
|
|
|
|
If you dont make a return of your "T x" and you declare only "T a" and "T b" in your main... how can the programm do the operation? Try...
template
T CProg::AddValues(T a, T b)
{
T x = a+b;
return (T) x;
}
and...
void main()
{
CProg prog;
prog.SetVal(9);
int a,b, c;
a = b =8;
c = prog.AddValues(a,b);
}
What does now the programm say?
EDIT:
I have just realiced that the error you told has not much to do with my answer (but anyways is something it could fail). This code is from Simon Huge's template to a smart CList.
template<class TYPE, class ARG_TYPE>
inline CMyList<TYPE, ARG_TYPE> operator + (const CMyList<TYPE, ARG_TYPE> &lhs, const CMyList<TYPE, ARG_TYPE> &rhs)
{ CMyList newList(lhs);
newList.AddTail(rhs);
return newList;
}
Maybe it gives you an idea
-- modified at 3:00 Tuesday 31st July, 2007
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
|
|
|
|
|
Thanks for your replay Nelek < >
But code given by you give same compile-time error.
Is there any another solution?
|
|
|
|
|
I didn't understand what you want to say.
Will you elobarate this?
|
|
|
|
|
As you have written member function as inline, i change code as following,
<br />
class CProg<br />
{<br />
int val;<br />
public :<br />
void SetVal(int y);<br />
template<class T><br />
void AddValues(T a, T b)<br />
{<br />
T x = a+b;<br />
}<br />
};<br />
void CProg::SetVal(int y)<br />
{<br />
val = y;<br />
}<br />
<br />
int main(int argc, char* argv[])<br />
{<br />
CProg prog;<br />
prog.SetVal(9);<br />
int a,b;<br />
a = b =8;<br />
prog.AddValues(a,b);<br />
double x, y<br />
x = 12.1212;<br />
y = 12.446;<br />
prog.AddValues(x,y);<br />
return 0;<br />
}
Above code is working properly. Thanks for that.
But eventhough, is there any other way for non-inline memeber function for class to use as Function Template ?
|
|
|
|
|
If it works... cool
but actually... I edited the message because of the < class T >, I forgot the empty spaces so the web took them as format snippets.
Anyways... The inline statement is not needed. The only thing is that for so short functions is better because the compiler add the inline function wherever it is called, insteads of referencing and going to read the code everytime it is called.
It should work as well without the inline.
I'm glad helping
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
|
|
|
|
|
Nelek wrote: The inline statement is not needed. [...] It should work as well without the inline.
Probably not. The Compiler must see the definition of the template at every point where a new template is instantiated.
And as tou almost newer include CPP-files, the template body must be in the header.
Failure is not an option - it's built right in.
|
|
|
|
|
I didn't say "put the template in the .cpp". I said that the same template function should work as well defined as inline as not defined as inline. It is already clear that all template functions have to go in headers.
In my article the functions I added to the SmartList are not inline and works perfectly.
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
|
|
|
|
|
Try with...
template< class T >
class CProg
{
public :
int val;
void SetVal(int y);
void AddValues(T a, T b);
};
template< class T >
inline void CProg< class T >::SetVal(int y)
{
val = y;
}
template< class T >
inline T CProg< class T >::AddValues(T a, T b)
{
return (T) (a + b);
}
EDIT: Some corrections, like empty space between < > and class T, so the web doesn't take them as labels for format.
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
|
|
|
|
|
I'm having a Cstring buffer that I'm accumulating for n iterations. At the end of each iteration I add \r\n to the end of buffer. After end of all the iterations I'm writing the CString buffer to the CFile object. I'm seeing hre two things.
1) The characters occupy double space may be two bytes. So the look i expanded rather than the normal.
2) Instead of \r\n the file contains some junk square characters. Also the file is not written with full contents.
The project is build in VS2005 with unicode. IS it mandatory to build a project with the default unicode support in VS2005.
|
|
|
|
|
1 is probably due to unicode. As for 2., post your writing code.
tom groezer wrote: IS it mandatory to build a project with the default unicode support in VS2005
Not that I know of.
|
|
|
|
|
tom groezer wrote: IS it mandatory to build a project with the default unicode support in VS2005
I think it is not mandatory, but VS2005 default to UNICODE settings.
|
|
|
|
|
Dear all,
Recently i have faced an interview .... so there the interviewer asked me.. have u knowledge of COM+ ... so what should i have to answer...
Now i am telling about me...
I am using the dlls(COM component) just for doing some logical operation from ASP page.or when i need the acess for the data base.. that time also from asp page only
so please tell me during interview what should i tell... about my work knowledge....
Tasu
Tasu
|
|
|
|