|
I don't mean to be contrary, but that seems to be something you would more likely want to write a script to do for you instead of a C program. I don't know perl well, but I believe that this is a trivial task with a perl script (I'm assuming you're using some version of *nix). Just google for "perl tutorial".
--Dean
|
|
|
|
|
You should have a look at the cmd.exe built in command "for". To be precise, "for /f".
|
|
|
|
|
Hi,
I am filling a list contol with items this way (so I can use the click on the column to sort)
<br />
LV_ITEM lvi;<br />
lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; <br />
lvi.iItem = index; <br />
lvi.iSubItem = 0; <br />
lvi.iImage = 0;<br />
lvi.pszText = LPSTR_TEXTCALLBACK; <br />
lvi.lParam = (LPARAM) pItem;<br />
<br />
if (InsertItem (&lvi) == -1)<br />
return 0;
I am sure that I have a memory leak because I am not sure that all the stuff I added is being removed when I exit
Any idea.....
|
|
|
|
|
How do you know this is the location?
When(where) pItem gets deleted?
What does you text callback do (in terms of potential memory leak)?
|
|
|
|
|
That's the thing....
How can I get the pointer back in order to delete it ?
Here is how I get pItem:
<br />
DITEMINFO* pItem, *pMirror;<br />
try {<br />
pItem = new DITEMINFO;<br />
}
and here is the head of the function when I put the stuff inside the list control:
<br />
void CBadDrivesReportView::OnGetdispinfo(NMHDR* pNMHDR, LRESULT* pResult) <br />
{<br />
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;<br />
<br />
if (pDispInfo->item.mask & LVIF_TEXT) {<br />
DITEMINFO* pItem = (DITEMINFO*) pDispInfo->item.lParam;<br />
<br />
switch (pDispInfo->item.iSubItem) {<br />
<br />
case 0:
::lstrcpy (pDispInfo->item.pszText, pItem->sn);<br />
break;<br />
.<br />
.<br />
.<br />
.<br />
.
I am looking for something like:
<br />
for (int i=0 ; i < Array.GetSize();i++)<br />
delete array.GetAt(i);
Thanks
|
|
|
|
|
You have to overwrite CListView::OnDestroy() (I assume CBadDrivesReportView is derived from CListView)
something like
void CBadDrivesReportView::OnDestroy()
{
for(int i = 0, count = GetListCtrl().GetItemCount(); i < count;++i)
delete (DITEMINFO*)GetListCtrl().GetItemData(i);
return CListView::OnDestroy();
}
|
|
|
|
|
Cool,
I will try it.
Thanks
|
|
|
|
|
is there any way to cast a CString to an Integer ?
for example i want to Cast "73264873287238" to 73264873287238
regards.
-=Ehsan-de-Burge=-
|
|
|
|
|
CString string_number="2323232323";
int real_number=atoi (string_number);
|
|
|
|
|
You can use atoi function.
Pavel
Sonork 100.15206
|
|
|
|
|
You should use the function atoi( const char *string ). There you can easily cast the CString, first casting it to LPCTSTR.
|
|
|
|
|
Hmmm ... seems like I wasted too much time writing my answer ... now you have the same solution for your problem 3 times. ;P
|
|
|
|
|
How do I prevent the current working directory from being changed after calling CFileDialog. Or when loading a file when the program starts up (called from the command line parameters)? This is really throwintg my program off course and thinking files are where they really aren't (i'm using the full path name when calling these files oddly enough.
-Steven
CP Addict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
(i'm using the full path name when calling these files oddly enough.
This is most weird. How can the current working directory affect your app if using full paths?
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Well say document c:\Documents And Settings\Crash\My Documents\22.404 is opened from windows.. The current working directory is set to c:\Documents And Settings\Crash\My Documents (which is a program). When I try to get the currrent directory without opening a file in the begining it doesn't return one which is prefectly fine with me, because it doesn't mess up anything.
-Steven
CP Addict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
What about a save and restore by calling GetCurrentDirectory() before the file dialog and SetCurrentDirectory() afterwards?
Jeremy Falcon
Imputek
<nobr>Excrement escapes everyone - even elders.
|
|
|
|
|
How would I prevent it from choosing the wrong directory when it starts up? I fixed the CFileDialog one (with a flag).
-Steven
CP Addict
By reading this message you are held fully responsible for any of the mispelln's or grammer, issues, found on, codeproject.com.
For those who were wondering, actual (Linux) Penguins were harmed in creating this message.
|
|
|
|
|
I know that CListCtrl is newer and has more functionality, but I'm wondering what are the major differences between these 2 classes. In other words, why would people still use CListBox and why didn't MS just change it to incorporate new functionality? Sorry if this is a obvious question, newbie here. Thanks!
|
|
|
|
|
why would people still use CListBox
It's simpler, if you don't want nifty features.
why didn't MS just change it to incorporate new functionality
Well this is just guessing, but the list control is a common control (which the list box is not), all of which are shipped in comctl32.dll . This DLL is frequently updated (by IE, for instance) to easily add more controls/features, and maybe changing the core list box control finds more restrictions from the point of view of software control in MS or anything. Maybe the've been developed by different teams.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
The list box is a builtin Windows control. It's purpose is to let the user select one or more items (usually strings) from a list that scrolls as necessary. The list box is relatively simple easy to use.
The list control is one of the common controls. It provides a much broader range of interaction with the user (multiple views, bitmap support, multiple columns, sorting, etc.). This broader range comes at a price, however. The list control takes more effort (on the part of the application) to set up and use.
Your choice of one over the other depends on what you need the application to do. The list box is good for simple selection tasks in a dialog. The list control handles tabular data, bitmaps, and drag-and-drop better. From the point of view of the programmer, the list box is much simpler to set up and use, as long as you're not trying anything fancy. The list control makes fancy interactions much easier.
Software Zen: delete this;
|
|
|
|
|
Hy people!
I have a problem
I'm doing an program in VC++ 6 under Win2K sp3, and I'm using a RichEditCtrl and works fine under 2k, but when I run the program under Win9x, the RichEditCtrl loses my CHARFORMAT formatation.
Does anybody know why?
Is this something about the version of RichEdit DLL?
What must I do?
thanks all of you for the atention,
cheers!;)
Ricky
|
|
|
|
|
I have a CDialog derived class and I'm storing pointers to the modeless objects I spawn in an STL vector. I use it like this in the View class :
int vecSize = ImageDisplayVector.size();
for (int i = 0; i < vecSize; i++)
{
CImageDisplay * pImageTemp = ImageDisplayVector[i];
pImageTemp->ShowWindow(SW_HIDE);
}
where
std::vector <CImageDisplay*> ImageDisplayVector; is global
and
class CImageDisplay : public CDialog
In the OnDestroy of the mainframe class i do the exact same thing:
int vecSize = ImageDisplayVector.size();
for (int i = 0; i < vecSize; i++)
{
CImageDisplay * pImageTemp = ImageDisplayVector[i];
WINDOWPLACEMENT wp;
pImageTemp->GetWindowPlacement(&wp);
}
It asserts in GetWindowpLacement at IsWindow()..........
So if this function (in mainframe class) thinks my pointer isnt a window (and its not null I checked) then how come SHowWindow (VIew class)happily works with the pointer?
Appreciate your help,
ns
|
|
|
|
|
Could you try the following please. In the place where you call GetWindowPlacement
int vecSize = ImageDisplayVector.size();
for (int i = 0; i < vecSize; i++)
{
CImageDisplay * pImageTemp = ImageDisplayVector[i];
pImageTemp->ShowWindow(SW_SHOW);///!!!! this is the change
WINDOWPLACEMENT wp;
pImageTemp->GetWindowPlacement(&wp);
}
I suspect at the time you call GetWindowPlacement your dialog windows are already destroyed. It could mean (depends on implementation) also that the pointer you store in the vector is invalid as well. Some MFC classes use "delete this" construct; I am not sure what you derived from.
|
|
|
|
|
Thanks a million. I have to wait a bit then I cant wait t check it out....
Appreciate your help,
ns
|
|
|
|
|
Tried it ...................wasnt the fix...;;( but thanks so much for trying.....
Appreciate your help,
ns
|
|
|
|