|
How can i get the sum for col2 ?
i have a CListCtrl m_list
--------------------------
|Col0 | Col1| Col2 |
--------------------------
| 10 | 2 | 1 |
--------------------------
| 10 | 2 | 1 |
--------------------------
all i want is to get the sum from col3 = 2
m_list.GetItem(...);
s1.Format(....);
AfxMessageBox(s1); // =2 from (Col3)
How Can i get the result?(from Col3); (sum)?
Bravoone
|
|
|
|
|
Wasn't one copy of your question enough?
"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
|
|
|
|
|
|
Check your previous question - I provided enough code to get you going down the right path.
"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
|
|
|
|
|
IS there any Windows API for setting the ACL of a file . . .
Proud To Be an Indian
|
|
|
|
|
vivekphlp wrote: IS there any Windows API for setting the ACL of a file . . .
Yes. Check out SetNamedSecurityInfo() .
"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
|
|
|
|
|
See this[^] articles is helpfuls?
|
|
|
|
|
Someone can recommend me a free and easy setup maker for Visual C++ aplications?
-I have used InstallShield but is too complicate for me.
-I used Inno Setup but makes some strange things... After making the installer and installing the app it only shows a Messagebox that says "Welcome to my aplication" and then closes. O_o
-I used too Smart Install Maker but it is not free, and shows a window during installation of the app that says "This is made with a no paid program" or something like that. Of course, I cannot use it...
Any other idea?
Thanks
Time to come clean...
Vive y deja vivir / Live and let live
Javier
|
|
|
|
|
|
whats the difference between
char test[] = "Hello";
and
char* test = "Hello";
in both cases is "Hello" allocated on the stack??
|
|
|
|
|
Haroon Sarwar wrote: char test[] = "Hello";
This is an array of characters. This is not a pointer.
Haroon Sarwar wrote: char* test = "Hello";
This is a pointer to an array of characters. Note that test will contain the address of the given array and not the real data.
For proof enter the following in the debugger
&test
test
ptest
&ptest
You will see that the first two are same, but the last two are not.
|
|
|
|
|
There are notable differences between:
Haroon Sarwar wrote: char test[] = "Hello";
Here test is a character array(i.e. a const pointer to a memory area containing six characters -remember the '\0' string terminator-), initialized with the string literal "Hello" .
Haroon Sarwar wrote: char* test = "Hello";
Here test is a pointer to the string literal "Hello" , that is a read-only memory area.
See the following sample code:
char test1[] = "Hello";
char * test2 = "Hello";
test1[2]='p';
test2 = test1;
test2[2]='p';
Hope that helps
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.
|
|
|
|
|
If you do these within a function they will both get allocated on the Stack, one array and one pointer. The actual "Hello " text in each case will end up as static data within the executable image. char text[] = "Hello"; will give you an on stack copy of this data at runtime. const char* test = "Hello"; will give you a pointer to the string stored in the image memory. char* test = "Hello"; will almost certainly be the same.
If you do these at file scope, i.e. in a .c or .cpp file but not in a function then the "Hello" text is still stored in the image and in this case so is test[] or test. With a reasonable optimising compiler with string merging char* test; will probably end up pointing to the same memory refered to by char test[] which will be the one and only original "Hello" text in the loaded image.
Have a look in the debugger at runtime and see what the address values are in each case. You'll soon spot the pointers to stack memory as opposed to pointers into the loaded image, the ranges will be quite different.
Nothing is exactly what it seems but everything with seems can be unpicked.
|
|
|
|
|
See here.
"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
|
|
|
|
|
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
|
|
|
|