|
How can i get the result ?
i have a CListCtrl m_list
--------------------------
|Col1 | Col2| Col3 |
--------------------------
| 10 | 2 | 1 |
--------------------------
| 10 | 2 | 1 |
--------------------------
all i want is to get the result from col3 = 2
m_list.GetItem(...);
s1.Format(....);
AfxMessageBox(s1); // =2 from (Col3)
How Can i get the result?(from Col3);
Bravoone
|
|
|
|
|
Bravoone_2006 wrote: How Can i get the result?(from Col3);
as follows
CString csText = GetItemText(1,2);
AfxMessageBox(s1);
nave
|
|
|
|
|
no you dont understand i need row1+row2 = s1(or can be more than 2 rows)
How?
Bravoone
|
|
|
|
|
you mean you want to get the sum of integers in all columns of row1 and row2?
nave
|
|
|
|
|
|
put it in a for loop
int nsum = 0;<br />
for( int nRow = 0; nRow < m_lis.GetItemCount();nRow++)<br />
{<br />
for( int nColumn = 0; nColumn < 3;nColumn ++)<br />
{<br />
CString csText = GetItemText(nRow ,nColumn );<br />
nsum += _atoi( csText);<br />
}<br />
}
nave
|
|
|
|
|
This is my problem is not working !why?
CString csText = m_list1.GetItemText(nRow ,nColumn );
nsum += atoi( csText);
m_sum.SetWindowText(csText);
Bravoone
|
|
|
|
|
Why is not working ?
int nsum = 0;
for( int nRow = 0; nRow < m_list1.GetItemCount();nRow++)
{
for( int nColumn = 0; nColumn < 2;nColumn++)
{
CString csText = m_list1.GetItemText(nRow ,nColumn );
nsum += atoi( csText);
m_sum.SetWindowText(csText);
}
}
Bravoone
|
|
|
|
|
Bravoone_2006 wrote: int nsum = 0;
Bravoone_2006 wrote: m_sum.SetWindowText(csText);
Where you want to show csText?
|
|
|
|
|
int nsum = 0;
for( int nRow = 0; nRow < m_list1.GetItemCount();nRow++)
{
for( int nColumn = 0; nColumn < 2;nColumn++)
{
CString csText = m_list1.GetItemText(nRow ,nColumn );
nsum += atoi( csText);
m_sum.SetWindowText(csText);
}
}
I would do it like this:
int CMyDialogBox::SumColumn(CListCtrl* pList, int nColumn)
{
int nSum = 0;
int nRows = pList->GetItemCount();
CString csText = "";
if (nRows > 0)
{
for (int nRow = 0; nRow < nRows; nRow++)
{
csText = pList->GetItemText(nRow ,nColumn );
if (!csText.IsEmpty())
{
CString sNumbers = "0123456789";
bool bIsValid = true;
for (int i = 0; i < csText.GetLength(); i++)
{
bIsValid = (sNumbers.Find(csText.GetAt(i) < 0);
if (!bIsValid)
{
break;
}
}
if (bIsValid)
{
nSum += atoi( csText);
}
}
}
}
}
void CMyDialog::SomeFunction()
{
int nResult = SumColumn(&m_list1, 1);
CString csText;
csText.Format("%d", nSum);
m_sum.SetWindowText(csText);
}
The code above allows you to debug easily, but at the same time, doesn't make any assumptions about the data you're trying to process. Your code blindly assumes that the data is in an expected format. For all you know, the selected column might contain alphabetic text instead of numbers. MY code performs the mundane (yet important) sanity checks before doing anything with the data.
Caveat: I typed all that in off the top of my head so there might be small compile issues, but certainly nothing you can't handle. On the other hand, if you can't handle it, maybe you should find another line of work.
NOTE: I didn't want to use the atoi function to determine the validity of the converted string because if it's not a number, it returns 0, which IS a number. It's also a VALID number, so you can't just assume that the return value is what you expect it to be. That's why I included code to check each character one at a time before trying to convert it to a numeric value.
-- modified at 9:21 Wednesday 30th May, 2007
-- modified at 9:36 Wednesday 30th May, 2007
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
John Simmons / outlaw programmer wrote: NOTE: I didn't want to use the atoi function to determine the validity of the converted string because if it's not a number, it returns 0, which IS a number. It's also a VALID number, so you can't just assume that the return value is what you expect it to be. That's why I included code to check each character one at a time before trying to convert it to a numeric value.
So why not just use strtol() ?
"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
|
|
|
|
|
DavidCrow wrote: So why not just use strtol()?
Because like atoi , it returns ZERO if the string cannot be converted.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
True, but unlike atoi() , it has an argument that tells if the entire string was looked at or not.
"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
|
|
|
|
|
There's a bunch of different ways to get to the same point. He used atoi , so I did to. The point really isn't worth arguing, IMHO, but y'all go right ahead and talk amongst yourselves.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Your answer was perfect.
|
|
|
|
|
Bravoone_2006 wrote: m_sum.SetWindowText(csText);
the SetWindowText() must be used after all the loop isn't?
int nsum = 0;<br />
for( int nRow = 0; nRow < m_list1.GetItemCount();nRow++)<br />
{<br />
for( int nColumn = 0; nColumn < 2;nColumn++)<br />
{<br />
CString csText = m_list1.GetItemText(nRow ,nColumn );<br />
nsum += atoi( csText);<br />
}<br />
}<br />
TCHAR tcsum[50]<br />
_itoa( nsum, tcsum, 10 );<br />
m_sum.SetWindowText(tcsum);
nave
|
|
|
|
|
How can i use a non staticmember function for callback purpose
thanks
|
|
|
|
|
See Here[^]
Description of article:
The purpose of this article is to present a method whereby both static and non-static class member functions, as well as non-member functions can be used as callback functions. Type-safety is important in this implementation, and some features are left out in order to retain this.
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r
My Blog: ^_^
|
|
|
|
|
You can't because static member functions and standard member functions don't have the same prototype: for the latter, an implicit this parameter is passed.
The way to solve this problem is that in general, most callback functions allow you to pass some data (in general a pointer). Pass the pointer to your class instance (this) along the address of the static function that will be used for callback. In the callback function, you can then cast back the pointer to your class and call a member function from it (it should be public).
|
|
|
|
|
Actually i need a WindowProc as a member function
|
|
|
|
|
Read this...[^]
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r
My Blog: ^_^
|
|
|
|
|
hi
How can i create an activeX control using an existing one
Arun
|
|
|
|
|
Hi,
Hope one of the following article can help you:
Article 1[^]
Article 2[^]
Article 3[^]
Regards,
The only programmers that are better than C programmers are those who code in 1's and 0's.....
Programm3r
My Blog: ^_^
|
|
|
|
|
hi
tnx
But i need to create a new ActiveX with an existing one.
while i am trying to do so, i am not getting the display properly.
while putting it on a web page there was no display.
when i removed the activex from my new activex it worked.
why it happens so?
|
|
|
|
|
I want to open a excel from vc++.
I used automation..
I am able to open the xls file without any problem..but i am not able to open the text file..
the only problem is Its not delimiting properly...
can anyone help me how to delimit(SPACE)..
This is the code i have used...
---------------------------------------------------
_Application app; // app is the Excel _Application object
COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
_Workbook objBook;
Workbooks objBooks;
Worksheets objSheets;
_Worksheet objSheet;
// app is the Excel _Application object
// Start Excel and get Application object...
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't start Excel.");
}
else
{
//Make Excel Visible and display a message
app.SetVisible(TRUE);
objBooks = app.GetWorkbooks();
long xyz=1;
COleVariant bNo;
bNo.boolVal=FALSE;
COleVariant bYes;
bYes.boolVal=TRUE;
//It is working fine.. only problem is i am not able to specify the delimiters...
// If i open an excel file its working fine... but if i open a text file... its giving error...
//how to separate with delimiter.
//objBooks.OpenText(((
objBooks.OpenText("F:\\test.txt",VOptional,VOptional,VOptional,xyz,bNo,bNo,
bNo,bNo,bYes,bNo,bNo,VOptional,VOptional,VOptional,
VOptional,VOptional,VOptional);
Chitra Sankaran
|
|
|
|