|
ok, found if I click right on my dialog, I have "Insert ActiveX control" pressed;found my commcontrol, all ok.
but still I would like to know if I can make my "Add to project" to appear.
thanks
marian
|
|
|
|
|
If you mean to add it to your toolbox, in VC2005 right_click the toolbox and select "Choose items"
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
|
|
|
|
|
This function should count the number of occurrences of strSearch within sentence. The compiler doesn't like it when a string variable is given instead of a char for functions such as strstr, strlen...
unsigned int CSentenceList::searchInSentence(const string* sentence, const string* strSearch)
{
char buffer[MAX_SENTENCE_LENGTH + 1] = {0};
memcpy(buffer, sentence, MAX_SENTENCE_LENGTH);
char* strToken = 0;
unsigned long iWordCount = 0;
strToken = strstr(buffer, strSearch);
while (strToken !=NULL)
{
if (strlen(strToken) > 0)
{iWordCount++;
strToken += strlen(strSearch);
}
strToken = strstr(strToken, strSearch);
}
return iWordCount;
}
Errors:
cSentenceList.cpp(70): error C2664: 'strstr' : cannot convert parameter 2 from 'const std::string *' to 'const char *'
SentenceList.cpp(76): error C2664: 'strlen' : cannot convert parameter 1 from 'const std::string *' to 'const char *'
I tried (char) and (char*) but they don't work...
Within the class members of stl::string, I found the following specialization that allows the class to take advantage of library functions that manipulate objects of this type char.
char_traits<char> Class A class that is a specialization of the template class char_traits<CharType> to an element of type char.
(MSDN)
Any idea how to use them?
Is it possible to cast a string to a char, somehow?
Is it possible to use other functions to search for substrings within the string class?
Jon
p.s. sorry for the numerous q's, I'm lost...
-- modified at 12:49 Sunday 27th August, 2006
|
|
|
|
|
First thing is that I would attempt this using the STL algorithms. Can't tell you how off the top of my head though as (a) I'm away from home and (b) I haven't done any C++ for over 18 months!
Second, I would pass the strings by const reference rather than pointer
(const string& strSearch.
Third, regarding the error you need to call c_str() on the string, i.e., strSearch->c_str() or strSearch.c_str() if you had a reference to strSearch.
Kevin
|
|
|
|
|
You are going to have to stop passing these strings around like they are normal strings, they are NOT!! They are classes and come with their own methods of accessing the data within them. You should also look at your error messages before you start asking for help. Look:
cSentenceList.cpp(70): error C2664: 'strstr' : cannot convert parameter 2 from 'const std::string *' to 'const char *'
The important words here are cannot convert parameter 2 from. It also gives you the line number (70), so you should go to that line and look at the second paramater to that function. The error then goes on to tell you more from 'const std::string *' to 'const char *'. The function wants a char * but you gave it a std::string* . Like I said the std::string has methods to access the data, and like I told you yesterday, use the .c_str() to get a const char* .
|
|
|
|
|
Why not just use CString from MFC? I think it contains the proper overloads to address that situation. However, I would listen to the poster "Waldermot". I think what he recommends would enable you to understand some important principles that you can successfully apply later.
|
|
|
|
|
I've got nothing against CString but all things being equal you're better off using std::string . For one it means you've got less porting to do if you decide to move the application to another platform.
Steve
|
|
|
|
|
|
I would like to include a validation that excludes carriage returns, on the lines of,
...
{ fileToRead.getline(strLine, MAX_SENTENCE_LENGTH);
if (strLine != CRLF)
{Sentences.push_back(strLine);
Size++;}
}
...
How do I validate strLine, perhaps through the ASCII code?
Jon
|
|
|
|
|
getline strips out the CR/LF - this may be giving you problems.
A cynic is a man who, when he smells flowers, looks around for a coffin. -H.L. Mencken
|
|
|
|
|
No actually the problem is that when there is an empty line (assuming a CR/LF) ONLY I would like to skip a block of code.
Jon
|
|
|
|
|
THERE WILL BE NO CR/LF - it will be an empty string. You are misinterpreting the problem. getline takes out the CR/LF but advances the file pointer, your code clearly indicates that you are looking for an empty line that includes the CR/LF. That is your problem.
A cynic is a man who, when he smells flowers, looks around for a coffin. -H.L. Mencken
|
|
|
|
|
Hi everybody, can anyone tell me how to display a dialog in a SDI application (the dialog has the CRecordView class as a base class). I just need to display a few records from an Access database in editboxes in my dialog. (That's for VC++ 6.0)
And my second question will be: I have a dialog in VC++ 2005 , but i can't assign appropriate class like CRecordView (I can only CFormView, CDialog, COLEproperty etc.)
Thanx everybody in advance
|
|
|
|
|
|
Thanx, but could you be more precise, this is a site for training, i need some tutorials and stuff, if you can point me to that kind of page that would help me more.
|
|
|
|
|
ivanris wrote: ...the dialog has the CRecordView class as a base class).
You can't do this. Dialogs are derived from CDialog , whereas views are derived from CView . CDialog and CView are on different branches of CWnd .
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
I have VS2005
Experimenting with header file is quite difficult because most of the time I do so VS2005 eat up 100% CPU and, slowly, all the memory as well (1GB, 2GB, 3GB, ... piou...... (reboot button))
Now I have been told that header file should speed up my compilation (which is rather slow even though the Managed C++ project is small)
Because I include <windows.h> in many headers (needed to define some enum from Windows constants) I though: OK: let's #include <windows.h> in stdafx.h.
But I have a doubt.. does it makes any sense to include a precompiled header in other headers?
|
|
|
|
|
I think you mean 'precompiled header', but from what you say this is not your problem. The precompiled header is just a standard header file 'stdafx.h' that is included in all your files. In it you should include all the header files you use most often, ie windows.h, vector, string...
But again, this doesn't sound like your problem of the CPU speed and memory
|
|
|
|
|
Hi friends
I have a toolbar of CToolBarCtrl class and I want to change Items of this toolbar dynamically in run time
Mehrdad
Agh
|
|
|
|
|
Do you mean you want to change the images, or that you want to add and remove buttons ?
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
I wanna add and remove button in runtime
Agh
|
|
|
|
|
See here[^]
maybe it is some helpful to you
|
|
|
|
|
As part of a sort algorithm I am copying the contents of a vector to a local dynamic array (temporarily) prior to sorting them (using a simple algorithm such as bubble sort).
CSentenceList.h
--------------------------------------------
class CSentenceList
{
public:
...
//Properties
unsigned int Size;
vector<string> Sentences; //list of sentences
...
private:
...
//Properties
string* m_tempList; //used for sort
};
CSentenceList.cpp
--------------------------------------------
....
void CSentenceList::sort()
{ m_tempList = new string[Size];
//copy Sentences to m_tempList
for (int iIndex = 0; iIndex = Size; iIndex++)
{m_tempList[iIndex] = Sentences[iIndex];} // ERROR!
Sentences.clear();
// sort the array
...
delete [] m_tempList;
}
However the code breaks during the assignment of the contents of the vector to the dynamic array (memcpy.asm), when trying to read from memory.
Error: Access violation reading location 0xabababab.
I am declaring m_tempList as a string* otherwise I wouldn't be able to create the array using the 'new[]' operator.
Any ideas? Any simpler way to sort?
Jon
|
|
|
|
|
You're sure that Size is the size of hte vector ? Either way, it's redundant, you should be pulling the size from the vector itself.
In any case, you should be using one of the sorting algorithms that come with the stl. Something like
#include <algorithm>
std::sort(Sentences.begin(), Sentences.end());
That's totally from very old and disused memory, but it's along those lines.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Your for loop has problems:
{ m_tempList = new string[Size];<br />
<br />
for (int iIndex = 0; iIndex = Size; iIndex++)<br />
{m_tempList[iIndex] = Sentences[iIndex];}
Since you allocated Size items, the index has a maximum of (Size-1). In the test of your for loop (iIndex = Size), you are setting the value of iIndex to Size instead of testing it for the limit. Your code in the for loop then tries to set the [Size] member to the value - illegal since it onlly has [Size-1] members.
Perhaps you mean:
<br />
for (int iIndex = 0; iIndex < Size; iIndex++)<br />
Karl - WK5M
PP-ASEL-IA (N43CS)
<kmedcalf@ev1.net>
PGP Key: 0xDB02E193
PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193
|
|
|
|