Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Löschen mit DeleteContents()

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
19.04.2004, 15:15 Uhr
~spaxx
Gast


hi Leute,

also folgendes Problem: Ich möchte, wenn ich auf Datei->Neu gehe alle Listenfeldeinträge löschen. Habe deshalb in der Doc die Methode DeleteContents() angelegt. Habe mir halt einen Zeiger auf die View besorgt:
POSITION pos=GetFirstViewPosition();
CTestView* pView=(CTestView*)GetNextView(pos);
und dann einen Zeiger auf das Listenfeld und in einer Schleife einfach gelöscht. Das funktioniert auch ohne Probleme. Also die Einträge sind weg. Aber wenn ich das Programm verlasse kommt ein Speicherfehler. Hat zwar keine Auswirkungen, aber sehr toll sieht das auch nicht aus. Woran kann das liegen???

MFG Spaxx
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.04.2004, 16:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Ich schätze mal das du vergessen hast irgendwo einen Pointer freizugeben, welchen du mit new/malloc angelegt hast. Warum löscht du aus dem Listenfeld nicht einfach per RemoveAllItems()/ResetContent()/o.ä?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.04.2004, 08:16 Uhr
~spaxx
Gast


also mit ResetContent() wird auch alles gelöscht, aber der Speicherfehler kommt immer noch am Ende. Und den Zeiger auf die View kann man nicht mit delete löschen. Sobald man den Zeiger auf die View auskommentiert ist der Fehler weg. Aber der Punkt Datei->Neu funktioniert halt nicht mehr. Gibt es da vielleicht ne andere Möglichkeit auf die View zuzugreifen???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.04.2004, 08:24 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


zeig mal etwas code, vielleicht entdeckt man dann was
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.04.2004, 08:50 Uhr
~quellcode
Gast


void CTestDoc:eleteContents()
{
// TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen
POSITION pos=GetFirstViewPosition();
CTestView* pView=(CTestView*)GetNextView(pos);//Zeiger aufView

//Zeiger auf Listenfeld1
CListBox* pListBox=(CListBox*)pView->GetDlgItem(IDC_LIST1);
pListBox->ResetContent();
//Methode zum löschen des CObArray Dateifeld
pView->DeleteDateifeld();

//Das gleiche Prinzip bei den anderen Listfeldern, Dahinter liegt immer
// ein CObArray wo die Werte reingeschafft werden
pListBox=(CListBox*)pView->GetDlgItem(IDC_LIST2);
for(int j=0;j<m_Serverfeld.GetSize();j++)
m_Serverfeld.RemoveAt(j);
m_Serverfeld.RemoveAll();
pListBox->ResetContent();



pListBox=(CListBox*)pView->GetDlgItem(IDC_LIST3);
pListBox->ResetContent();
pView->DeleteServerfeld();

CDocument:eleteContents();
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.04.2004, 10:51 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich schätze mal das du beim beenden die CObArray's nicht aufräumst
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.04.2004, 13:09 Uhr
~pierre
Gast


ja den Fehler hatte ich auch mal, weiß aber nicht, wie man den wegbekommt. Wäre toll wenn das jemand weiß.

MFG Pierre
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: