|
If you want to allocate an array from which you don't know the size at compile time (you only know it at runtime), then you need to use new.
It is quite basic C++ stuff and it is not the first time you ask that question (even if people already answered you). I think it would be great for you to learn C++ from the start. So, buy a good book and take some time to learn it correctly. You might spend some time on it but at the end, you will be much more efficient. Just an advice though...
|
|
|
|
|
thanks, i already bought c++ fifth edition book, but so few pages to introduce new and delete, any code or stuff are available for me? thanks a lot
Li Zhiyuan
|
|
|
|
|
Which part of "Read the forum guidelines" do you not understand?
Each time you use these idiotic subject lines "Need Help", "Urgent!!!!! Help!!!!!!!!!!!!!!!!!", etc. you are told to use subject lines that actually describe the problem briefly but you simply refuse to do that. Not to mention that this has been going on for almost 2 years.
What is your malfunction?
|
|
|
|
|
thanks sir.do you have any such stuff or code? thanks
Li Zhiyuan
|
|
|
|
|
int** myArray;
myArray = new int*[10];
for (int i=0;i<10;i++)
{
myArray[i] = new int[20];
}
So, now you have a 2D array. Don't forget to delete everything once you are done. Here the same applies: you need to delete each row first and then delete the root pointer. I leave you that as an exercice to see if you understand the concept .
|
|
|
|
|
what about vector vector combination!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You/codeProject$$>
|
|
|
|
|
Cranky wrote: Not to mention that this has been going on for almost 2 years.
But, I think he is not a native English speaker. However, 2 years into CP and that won't make an excuse.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Hi all,
I have some CTreeCtrl that i using in my Dialog application.
And i want to insert 20 item into the tree.
The text of the item is "item %d as tree item" - and i want to insert each item as the last item in the tree.
But in fact - i getting tree like this
Father item
"item 1 as tree item"
"item 2 as tree item"
"item 11 as tree item"
"item 12 as tree item"
.
. //until 20
.
"item 3 as tree item"
"item 4 as tree item"
"item 5 as tree item"
"item 6 as tree item"
.
. //until 10
.
My problem is that i want to insert each item as sort item.
I try to insert with parameter the hInsertAfter - and i try to use TVI_LAST and TVI_FIRST
But nothing help.
Thanks for any help.
|
|
|
|
|
Here's the code I use to fill in a tree:
BOOL BlahFillInTree (someparams, CUITreeCtrl &Tree, HTREEITEM hParent)
{
HTREEITEM hChild;
int i, j;
CString s;
TVINSERTSTRUCTW tvInsert;
memset (&tvInsert, 0, sizeof (tvInsert));
tvInsert.hInsertAfter = TVI_LAST;
tvInsert.item.mask = TVIF_PARAM | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
tvInsert.item.iSelectedImage = tvInsert.item.iImage = 0;
for (i = 0; i < m_DevArray.GetSize (); i++)
{
hChild = Tree.InsertItem (m_DevArray [i].Name, hParent);
tvInsert.hParent = hChild;
tvInsert.item.iSelectedImage = tvInsert.item.iImage = 0;
for (j = 0; j < 16; j++)
{
tvInsert.item.lParam = m_DevArray [i].dwCode [j];
s = SomeGetCommandStringFunction (tvInsert.item.lParam);
tvInsert.item.pszText = (LPTSTR)(LPCTSTR)s;
tvInsert.item.iSelectedImage = tvInsert.item.iImage = SomeGetCommandImageFunction (tvInsert.item.lParam);
Tree.InsertItem (&tvInsert);
}
}
return TRUE;
}
Also, try:
Tree.InsertItem ("A", TVI_ROOT, TVI_LAST );
Tree.InsertItem ("Z", TVI_ROOT, TVI_LAST);
Tree.InsertItem ("C", TVI_ROOT, TVI_LAST);
Iain Clarke appearing in spite of being begged not to by CPallini.
|
|
|
|
|
As i said .. The solution that you gave me ( Tree.InsertItem ("A", TVI_ROOT, TVI_LAST ); ) is not working - and i really don't know way.
The first solution i try also - ( using "insertafter" ) and its also does not working at all.
|
|
|
|
|
The first bit of code I gave you, uses the TVINSERTSTRUCT directly - the second uses one of the overload versions in CTreeCtrl.
I've looked, and I can't find any TVS_SORT, so I'm a bit stuck too.
The only suggestion I have is to raw...
TVINSERTSTRUCT tvis = {0};
tvis.hParent = TVI_ROOT;
tvis.hInsertAfter = TVI_LAST;
tvis.tvItem.mask = TVIF_TEXT;
tvis.tvItem.pszTest = _T("A");
SendDlgItemMessage (IDC_MYTREE, TVM_INSERTITEM, 0, (LPARAM)&tvis);
tvis.tvItem.pszTest = _T("Z");
SendDlgItemMessage (IDC_MYTREE, TVM_INSERTITEM, 0, (LPARAM)&tvis);
tvis.tvItem.pszTest = _T("C");
SendDlgItemMessage (IDC_MYTREE, TVM_INSERTITEM, 0, (LPARAM)&tvis);
And see how that turns out. It might be worth looking at the header files to see the value of TVI_SORT, so you can make sure it's not being used when you single step through the above code.
If this works, you can then see how your code deviates from it, but stepping into the CTreeCtrl::InsertItem member function.
Iain.
Iain Clarke appearing in spite of being begged not to by CPallini.
|
|
|
|
|
Hi Experts,
I am filling a file content with Zero and renamed it and Delete it.
but when I rename the file and try to delete it, file file's lost contents are come back.
If I do not Rename the file everything is fine.
Its like
1.Fill content with Zero
2. szString=RenameFile(szString)
3. DeleteFile(szString);
Note:- I am rename(0 API to Rename file.
But I put a Sleep(2000) in between 2 and 3 It works well but get slow.
Is there any workaround?
Thank You.
|
|
|
|
|
pther wrote: I am filling a file content with Zero and renamed it and Delete it.
Why would you modify the contents of a file and rename it, which you are going to delete? What exactly are you trying to do?
pther wrote: But I put a Sleep(2000) in between 2 and 3 It works well but get slow.
Sleep[^]is defined as:
A computer program (process or task) may sleep, which places it into an inactive state for a period of time.
Eventually the expiration of an interval timer, or the receipt of a signal or interrupt causes the program to resume execution. What else would you expect if you use Sleep command?
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
I want to overwrite the file content,and want to change the file name also and delete the modified file path.
Overwritten is going finr but when i rename the file and delete it its prevoius contents are coming back.
If I put Sleep() after rename, I think system make some updation in file system and it successfully does the required task.
|
|
|
|
|
I still don't understand your requirement. Why would you modify the contents of a file, rename it and then delete it after sleeping for 2 seconds? Right now I am feeling like whacking my head with this keyboard.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
I want to erase the file content so that file could not be recover i.e completely destroyed from the system.
|
|
|
|
|
pther wrote: I want to erase the file content so that file could not be recover i.e completely destroyed from the system.
DeleteFile()[^] should let you do that.
But what were you doing modifying the contents and renaming the file which you apparently wanted to delete? Am I missing something?
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
When you delete a file its contents are as it is on disk, file system just mark it as "deleted" using some flag. Using any data recovery software you can get back your deleted file.Thats why I am overwrtting the file and also change the name (so that user can not recognise the file by name) and finally delete it.
If user getback his deleted file like this, the file will conatins the garbage conetent i.w no useful to user.
|
|
|
|
|
Okay, I get it now.
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
so that is why you asked _commit in previous post,
try the WIN32 API equivalent,
BOOL FlushFileBuffers(
HANDLE hFile
);
may be useful.
|
|
|
|
|
Thank you, Its working
|
|
|
|
|
pther wrote: I want to erase the file content so that file could not be recover i.e completely destroyed from the system.
To do that correctly takes quite a bit of know-how. It is not as simple as just filling a file with one pass of random data (which, BTW, is more secure than using just zeros because the bit patterns are different) and then deleting the file.
Without even getting into issues like how magnetic media works and how "underlying" bit patterns can be recoverable using really expensive equipment (see: Peter Gutmann's paper on this[^]), simple things like the OS cache, and disk cache will interfere greatly.
For example, just because you wrote 1MB of data in code does not mean that it has made its way to disk (yet). It could hang around in the OS cache, and then in the disk cache. If you write the same file location multiple times (i.e. you were trying multiple write passes with different random data like you should), the disk might not get any of the writes except the last one.
You really need to research how caches work in your target OS as well as on disk drives, and then how modern magnetic storage works before going down this path. Tip - you will at least have to learn about which different bit patterns to write and how many times they need to be put on the media.
Why do I know this? Because I have written "secure deletion" software before, and debunked other so-called secure deletion programs as part of for-hire research (quite a few years ago and no, I cannot say the company). Today's drives may work a lot different than the ones I worked with before, so things may be even more difficult these days.
I will say that much of the "security" software out there do nothing more than offer a false sense of security.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
I think he is making a copy at some point, and then deleting the original... Still doesn't make sense though. Why not just modify that same file?
The best way to accelerate a Macintosh is at 9.8m/sec² - Marcus Dolengo
|
|
|
|
|
No, It is not making any copy, I checked the file content throuh file system.
|
|
|
|
|
I remember that you asked this question some time ago. And you have not resolved yet?
Maxwell Chen
|
|
|
|