Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Cstring in struct

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
08.03.2003, 07:27 Uhr
~Alois
Gast


Ich habe in einer Datenstruktur mehrere CStrings. Wenn ich denen dann einen Wert zuweisen will kommt folgender Fehler:
Debug Assertion Failed!
File: afx.inl
Line: 122

Muss ich mit CStrings erst noch was machen, damit ich sie in einer Struktur benutzen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.03.2003, 08:39 Uhr
Tommix



'Morgen,

Zitat:
Muss ich mit CStrings erst noch was machen, damit ich sie in einer Struktur benutzen kann?

Eigentlich nicht, bisschen Code wäre nicht schlecht.

Gruß, Tommix

Dieser Post wurde am 08.03.2003 um 08:39 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.03.2003, 09:15 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


wenn du sowas machst:


C++:
struct a {
  CString a1;
  CString a2;
};

a var;
memset(var,0,sizeof(var));
var.a1 = "b"; // <-- löst exception aus



memset konnte ich noch nie ohne exception bei cstring structs benutzen...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.03.2003, 09:21 Uhr
~Alois
Gast


Das ganz ist ein Adressbuch. Wenn eine neue Person hinzugefügt wird, wird der Zähler m_pAnzahl um 1 erhöht, der Personen-Array um 1 Element aufgestockt und das neue Element mit Daten gefüllt:


C++:
t_Person* Person;
//...
int i = m_pAnzahl++;
realloc(Person, m_pAnzahl*sizeof(t_Person));
Person[i].Vorname = m_dHinzufDlg.m_strVorname;    //<- Fehler
//...



Die Stuktur:

C++:
typedef struct t_Person
{
CString      Vorname,
                Nachname,
       Strasse,
       PLZ,
       Ort,
        Land;
t_Date        Geburt;
int              tAnzahl;
CStringArray Tele;
int              eAnzahl;
CStringArray Email;
int              bAnzahl;
CStringArray Bild;
CStringArray bPfad;
};

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
08.03.2003, 09:25 Uhr
~Alois
Gast


Korrektur:

Code:
t_Person* Person;
//...
int a = m_pAnzahl++;
realloc(Person, m_pAnzahl*sizeof(t_Person));
Person[a].Vorname = m_dHinzufDlg.m_strVorname;    //<- Fehler
//...

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.03.2003, 12:32 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


realloc usw funktioniert bei CString irgendwie nicht, da CString selber seinen Speicher allociert, probier mal aus obs geht wenn du eine verkettete Liste benutzt ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.03.2003, 13:29 Uhr
Tommix



... oder CArray. Ich würde C und C++ nicht unnötig vermischen.

C++:
#include <afxtempl.h>

CArray<tPerson*, tPerson*> Person;

// Eintrag hinzufügen:

tPerson* pPerson = new tPerson;
pPerson.Vorname = m_dHinzufDlg.m_strVorname;

Person.Add(pPerson);

// Am Programmende die Speicherfreigabe nicht vergessen:

for(int cnt = 0; cnt < Person.GetSize(); cnt++)
    delete Person[cnt];

Person.RemoveAll();



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.03.2003, 14:25 Uhr
Alois



Vielen Dank euch Allen!
Die machs jetzt mit dem CArray.
 
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: