|
I did check up your profile - the Signor wasn't a lucky guess. You almost had Senor until my brain started firing again.
As for you having bad times about your Inglesi[*] - I've not noticed you making mistakes, and I'm pretty critical. And it's hard enough for me to understand some of the butchered english here. I'm curious as to whether being a second language makes them easier or harder for you to parse.
If they give you grief, ask them to translate their complaint into your language. Or have a on me.
Iain.
ps, Check my sig!
[*] Most of my knowledge of Italian and German comes from Battle comic from my youth. I'm fully fluent in german if ever I need to capture a pigdog english airman... Shockingly, this has yet to prove useful.
Iain Clarke appearing by Special Request of CPallini.
|
|
|
|
|
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Wow, the guy is posting since 2006 .
He learned a lot, I see
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
hi
i want to display a progress bar in listview control as a subitem.
the progress bar would continously be updated and i shouldnt use any images.
i am using vc++ 2005 and i am not using MFC.
i am using win32 programming.
i know this can be done using custom control but if any one knows more than that please reply (i.e with a smaple code)
|
|
|
|
|
Did you search on the codeproject?
|
|
|
|
|
yes i did but couldnot find it
|
|
|
|
|
Hans wrote an article that List control has controls like progress bar,checkbox,... if you can find it on the codeproject it will be your answer.
|
|
|
|
|
Hello,
This might be a basic point in C++ but i need help......
This is the code snippet i've been using:
typedef char* myString;
main()
{
myString i="abcd";
myString j="ABCD";
....
}
I need to copy j to i. But i'm not able to use usual strcpy. I also tried assigning char by char using for loop. ( i[1]=j[1] etc). But it didn't work.
I dont want to use array format for the string, it should be char* only. Also i dont want to directly point i to j(i=j) coz it might result in memory leak.
Plz, suggest some alternative.....
|
|
|
|
|
gReaen wrote: Also i dont want to directly point i to j(i=j) coz it might result in memory leak.
No it won't.
Anyway, for such string manipulations, it is much easier to use the string class from the STL (std::string).
|
|
|
|
|
A typedef isn't enough to transform a string literal (as well a char pointer) into a string.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
gReaen wrote: But it didn't work.
The only way that would work would be to change the declarations to:
char i[] = "abcd";
char j[] = "ABCD"; See here for the difference in why one can be changed and not the other.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
You should never loose sight of the code generated by the compiler. In your case the Compiler will include two char arrays into the excecutable, namely "abcd" and "ABCB" The fact that you Tyedefed them as myString has confused you more than the compiler. You cannot copy i to j, because both are in memory reserved for string constants. In other words: Both are in 'read only' memory. I strongly suggest that you get a copyof the excelent book written by Brian Kernighan and Denis Ritchie about the 'C' language (Never mind CPP). And rephrase the question above after reading these books.
If you do the appropriate amount of study,you will realise that in the above example code fragments, memoryleaks are not even close to being an issue.
Bram van Kampen
|
|
|
|
|
is there any technical difference between invoking a constructor using
class obj(5,20) and class obj=class(10,40).
Thanks in advance
|
|
|
|
|
philiptabraham wrote: can anybody help me out
Not if you don't read the sticky posting called "how to get answers", and the line that says "please use meaningful subjects". I've yet to see someone post a message with a subject of "ignore this - I don't need any assistance".
But I'll be nice anyway..
1/ The numbers are different, so there will be differences.
2/ Less trivially, the first example just calls the constructor. The second example makes two objects, (obj, and a temp one), then copies temp to obj, then destroys the temp object.
If it's CPoint, then it's trivial. If it opens / closes databases, does a network operation etc, then the difference could be HUGE.
Iain,
-------
Update: See CPallini's and my conversation later. Short version: No actual difference between the two bits of code (except the numbers!)
modified on Friday, February 01, 2008 5:13:33 AM
|
|
|
|
|
|
Cedric Moonen wrote: I don't need any assistance
Sure?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
I knew *someone* would bite - but I assumed it would be Signor Pallini. And he's the one who gave a sensible reply!
Iain.
|
|
|
|
|
Iain Clarke wrote: I knew *someone* would bite
WOW I missed something, anyway usually Cedric is a very nice guy.
Iain Clarke wrote: but I assumed it would be Signor Pallini
Pallini is a quite docile guy too, isn't he?
BTW Signor in that context was fantastic!
Iain Clarke wrote: And he's the one who gave a sensible reply!
Oh, well, hence I can assume he is.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Well, it's friday That explains a lot
|
|
|
|
|
Iain Clarke wrote: 2/ Less trivially, the first example just calls the constructor. The second example makes two objects, (obj, and a temp one), then copies temp to obj, then destroys the temp object.
I thought the same. But I made a little test (optimization disabled):
#include <iostream>
using namespace std;
class MyClass
{
public:
int _a, _b;
MyClass(){}
MyClass(int a, int b):_a(a), _b(b){}
MyClass(const MyClass & proto)
{
_a = 0;
_b = 0;
}
MyClass & operator = (const MyClass & proto)
{
_a = proto._b;
_b = proto._a;
return *this;
}
};
void main()
{
MyClass my1(3,2);
MyClass my2=MyClass(3,2);
MyClass my3(my1);
MyClass my4;
my4=my1;
cout << "my1: " << my1._a << " " << my1._b << endl;
cout << "my2: " << my2._a << " " << my2._b << endl;
cout << "my3: " << my3._a << " " << my3._b << endl;
cout << "my4: " << my4._a << " " << my4._b << endl;
}
</iostream>
and to my surprise, the output:
my1: 3 2
my2: 3 2
my3: 0 0
my4: 2 3
Well I'm really upset about. What do you think?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
It's because the compiler will treat this:
CMyCLass my1 = my2;
As this:
CMyClass my1(my2);
If you would have done that operation on two lines, then the assignment operator would have been called.
|
|
|
|
|
Nope,
the compiler treats
MyClass my2 = MyClass(3,2);
as it was
MyClass my2(3,2);
(I've messed up both copy constructor and assignment operator to detect it)
and IMHO skipping the temporary object construction and the assignment operator is really weird, but I don't know what the C++ standard requires.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
CPallini wrote: What do you think?
Well, I immediately quibbled your tests, so I did some of my own...
class MyClass
{
public:
int _a, _b;
MyClass()
{
TRACE0("Blank Constructor\n");
}
~MyClass()
{
TRACE0("Destructor\n");
}
MyClass(int a, int b):_a(a), _b(b)
{
TRACE2("Parameter Constructor(%i,%i)\n", a,b);
}
MyClass(const MyClass & proto)
{
_a = 0;
_b = 0;
TRACE0("Copy Constructor\n");
}
MyClass & operator = (const MyClass & proto)
{
_a = proto._b;
_b = proto._a;
TRACE0("Copying\n");
return *this;
}
};
void main()
{
MyClass my1(3,2);
MyClass my2=MyClass(30,20);
}
And I got:
Parameter Constructor(3,2)
Parameter Constructor(30,20)
which came as a suprise. So, the second case is being "Optimised" - even with no compiler optimisation. So C++ is treating the two cases as grammatically equivalent.
This is why I help here - I learn something by code-spelunking too!
Iain.
|
|
|
|
|
Now you have to fix all that database and network stuff!
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
Is there a Windows API or a method which can convert FILE* to HANDLE of a file or convert HANDLE to FILE* ???
The background of application :I want to monitor the I/O of a special file by hooking WriteFile and the file be opened by 'fopen'.In addition, I can`t modify the function form 'fopen' to 'CreateFile'. Therefore I can`t know which handle of file should be monitored according to the first parameter of WriteFile.So I hope there is a way that can convert HANDLE or FILE* to another.
If you know it ,please tell me .
Thank you.
|
|
|
|