|
search for some articles here in CP... there are many good ones ; i'm sure you can fine what you need.
cheers,
TOXCCT >>> GEII power
|
|
|
|
|
|
After calling InsertItem() , you'll then need to call SetItemData() .
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen
|
|
|
|
|
Hello,
I am implementing a function which accepts a number of variable parameters and it has the following form:
char *FormatString(char *pszFrm, ...)
This function performs some (limited) processing which, when concluded, should branch execution to a different function. And this is where the problem lies.
How do I pass this variable number of parameters, as it is (meaning unchanged), to a different function?
Any insights will be greatly appreciated.
Thank you
|
|
|
|
|
You can pass the va_list you generate to any function that takes it.
char *FormatString(char *pszFrm, ...)
{
va_list arguments;
va_start(arguments, pszFrm);
va_end(arguments);
return pointer_you_got_somehow;
} Going by your function name, you are probably wanting to pass the parameters onto sprintf() . You can pass the va_list onto _vsnprintf which does the same thing as sprintf .
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/html/_pluslang_functions_with_variable_argument_lists.asp[^]
"You're obviously a superstar." - Christian Graus about me - 12 Feb '03
"Obviously ??? You're definitely a superstar!!!" mYkel - 21 Jun '04
Within you lies the power for good - Use it!
|
|
|
|
|
I've been poking aroung MFC source files and managed to find a reference in ::AfxTrace to the _vsnprintf function...
But thanks a lot anyway!
Cheers,
David Nimrod
|
|
|
|
|
I have a CStringArray filled with a bunch of filenames. The filenames are like this... 1.jpg, 2.jpg, 3.jpg, and so on.
I have over a thousand of these. From time to time and for some reason I need to go through and rename all of them. I use CFileFind with FindFile() and FindNextFile()to fill the string array with the filenames. But, they're sorted alphabetically, 1.jpg, 10.jpg, 100.jpg, 2.jpg, 20.jpg, etc.
I need these to be sorted sequentially.
I cant seem to figure out how to do it. All I need is to sort the filenames in the string array sequentially.
Any help?
Thanks,
Daniel
|
|
|
|
|
string sorting is different than numerical sorting.
if your filenames are only <number>.jpg then, convert the number from string to number and sort according to the numbers.
<hr><a href="http://www.thesorus.qc.ca">Maximilien Lincourt</a>
<b>Your Head A Splode</b> - <i>Strong Bad</i>
|
|
|
|
|
I tried that first. Sorting an array of ints isnt any easier.
Know of an easy way to sequentially sort an array of ints?
|
|
|
|
|
|
I figured this out...
<br />
for (int yy = 0; yy < Size; yy++)<br />
{<br />
for (int y = 1; y < Size; y++)<br />
{<br />
if (c[y] < c[y-1])<br />
{<br />
a = c[y-1];<br />
b = c[y];<br />
c[y] = a;<br />
c[y-1] = b;<br />
a = b = 0;<br />
}<br />
}<br />
}<br />
Size = size of int array.
Its ugly, but it works.
|
|
|
|
|
Daniel1324 wrote:
for (int yy = 0; yy < Size; yy++)
{
for (int y = 1; y < Size; y++)
{
if (c[y] < c[y-1])
{
a = c[y-1];
b = c[y];
c[y] = a;
c[y-1] = b;
a = b = 0;
}
}
}
Size = size of int array.
Yikes! Have a look at the qsort() C library function. You should be able to do this:
static int intCompareFunc(const void *parm1, const void *parm2)
{
int num1 = *static_cast<const int*>(parm1);
int num2 = *static_cast<const int*>(parm2);
return num1 - num2;
}
...
qsort(c, sizeof(int), Size, intCompareFunc); That should sort the c array in ascending order.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
|
Hi,
iam a beginner to visual c++ and i think i have a simple question:
i want to search a character in a char variable.
like
<br />
switch (&mychar)<br />
{<br />
case CHR(13):<br />
MessageBox("found");<br />
default:<br />
MessageBox("Not Found!");<br />
}<br />
In VB i could compare like
if mychar = Chr(13) then ...
Can anybody call me the functionname of Chr or Ord or ASC in MFC c++ 6.0?
Thx alot!!
Bye
|
|
|
|
|
Just use
case 13:<br />
char is numerical type in C++
Igor Green
http://www.grigsoft.com
Compare It! + Synchronize It! : Files and folders comparison never was easier!
|
|
|
|
|
|
Does someone know how I can indent the second part of a line in an edit control if it is wrapped?
|
|
|
|
|
Try using a rich edit control rather than a standard edit box. You can set paragraph properties for them, including hanging indentation.
Ryan "Punctuality is only a virtue for those who aren't smart enough to think of good excuses for being late" John Nichol "Point Of Impact"
|
|
|
|
|
Hi everyone!
Just wanted to know if there is a possibility to detect what ODBC data sources are available on the current system.
Right now I just open a DSN by calling OpenEx(..) from CDatabase. If I get returned false only would be fine, but I always get a messagebox telling me that the database source is not available.
I am using Firebird ODBC drivers. If I would be able to open the datasources by opening the database files (*.fdb) directly and not through the DSN, you could help me either! But so far I found no connection string that would do so for Firebird...
Thanks in advance,
Roland
|
|
|
|
|
It depends on how comfortable you are with the system registry and if you are running WinNT/2000/2003/XP? I don't know if the Win98/ME directory is structured exactly the same way but a little exploring will probably get you similar information.
If you are not familiar with the system registry take a look at it using the H:\WINDOWS\system32\regedt32.exe (H:\WINNT\system32\regedt32.exe for NT) program. The H: drive is the system drive on my system so you will have to substitute your system drive, probably C:, if you have a single operating system loaded on your machine. You can also enter the "set" comand from the command line in a DOS command window and there will be an environment variable named SystemDrive that will tell you, as the name implies, what your system drive is. You can alternatively go to Control Panel=>System and look under the Advanced tab for a button labeled "Environment Variables" and use the windir system variable to construct the path to the regedit32 program.
Anyway, when you execute the regedit32 program you will be able to see what resides in your system registry. As the program name implies you can also edit the contents of your system registry but I would highly recommend against this unless you are very familiar with what the consequnces of the edit are.
Under the key "HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources" you will find an entry for each ODBC data source defined on your system and it's associated data provider. You can enumerate the data sources and parse the strings for *.fdb, in your case, and you have enough information to access the data base via ODBC services.
If you want more information about the data base use the data source string name to go further down the ODBC.INI tree and look for the string named "DBQ" under the data source name. The "DBQ" string value will be the path to the data base. From there you can test for the existance of the data base and from the "FIL" string value you can determine what type of data base you will be working with.
There are examples of accessing the system registry and using ODBC services programmitacly in MSDN if you are using the Microsoft Visual C++ compiler. If you are using another compiler consult their API documentation for how to accomplish the same results.
|
|
|
|
|
Hi all, ibe been trying to find a memory leak for the last 5 hours, and then i discovered what i think is a "small bug" in CSimpleArray<> collection helper, here´s an example:
class acls
{
public:
CString m_str;
// constructor, copy constructor, etc. here
};
// in some function...
// create some objects to add...
acls mycls;
mycls.m_str="ABC";
acls another;
another.m_str="CDE";
// and create the array & add the objects
CSimpleArray<acls> arr;
arr.Add(mycls);
arr.Add(another);
arr.RemoveAt(1);
this results in a memory leak pointing to the 2nd object added to the array, the interesting part is, that if you remove the very first item instead (RemoveAt(0)) there is no leak.
Can NE1 suggest a way arround this that does not involve NOT using CSimpleArray? my project is allmost finished, and rewritting everything not to use these arrays would take me forever.
thanks!
|
|
|
|
|
Ernesto D. wrote:
mycls another;
Shouldn't this be:
acls another;
I'd be very, very surprised if there was a problem with CSimpleArray.
Neville Franks, Author of ED for Windows www.getsoft.com and coming soon: Surfulater www.surfulater.com
|
|
|
|
|
yep, my mistake there. check out the new "real world" example ibe just posted. I got the same leak.
|
|
|
|
|
Ernesto D. wrote:
check out the new "real world" example ibe just posted.
And where would that be?
Neville Franks, Author of ED for Windows www.getsoft.com and coming soon: Surfulater www.surfulater.com
|
|
|
|
|
Umm, just below this post man! i added it as a reply
|
|
|
|