CString Array?
-
Ich weiß nicht genau, was du mit "dynamisch" bei CStringArray meinst. Wenn du weitere CString-Objekte mit Add anfügst, wird das Ding von gnaz allein größer. Du brauchst dich um nichts zu kümmern.
-
Ersteinmal Danke für die Antworten. Mit einem Dynamischen CString Array meine ich ein "erweiterbares" Array. Im Grunde möchte ich verschiedene Texte in verschiedenen CStrings speichern. (Jeder CString bekommt einen Text zugewiesen)
z.BCString Test[88];
Test[1].Format("Hallo");
Test[2].Format("fmdslfdl");
...Das möchte ich nun halt "dynamisch" haben:
CString *Test;if (i==0)
{
Dateinamen = (CString
malloc (sizeof(CString)*i);
}
else
{
Dateinamen = (CString
realloc (Dateinamen,sizeof(CString) *i);
}
i=i+1;
Dateinamen[i].Format("%s",c_file.name);
-
und was gefällt dir daran nicht:
CStringArray strArr; strArr.Add("Hallo"); strArr.Add("fmdslfdl"); .... // noch einen string hintern dran strArr.Add("drffgh"); // string nr. 1 wieder löschen str.RemoveAt(1); // einen string auf stelle 1 hinein: str.InsertAt(1,"fgjhngf"); // nen string von Stelle 2 lesen CString str = strArr[2]; ...??
-
if (i==0)
{
Dateinamen = (CString
malloc (sizeof(CString)*i);
}
else
{
Dateinamen = (CString
realloc (Dateinamen,sizeof(CString) *i);
}
i=i+1;Das erste Problem, das du hast, ist die Multiplikation mit i. Bei i == 0 allokierst du Speicher mit der Größe 0.
Zum zweiten bin ich mir nicht so sicher, ob das mit dem sizof(CString) so richtig gut geht. Die CString haben einiges an dynamischer Speicherverwaltung im Hintergrund. Wenn du wirklich so arbeiten willst, würde ich dir empfehlen CString-Objekte mit new anzulegen und dein Array als Pointer->Array auf die CStrings zu gestalten.
Am einfachsten ist natürlich das Rad nicht neu zu erfinden und mit CStrArray zu arbeiten.
-
CString ist eine MFC-Klasse und keine Variable.
Bei i == 0 allokierst du Speicher mit der Größe 0.
Hier wird kein Speicher allokierst sondern nur gefragt ob i gleich 0 ist.
Wir befinden uns in MFC und da gibt es die Klasse
CStringArray
-
if (i==0){ // Auf das i hinter sizeof achten!! Dateinamen = (CString *) malloc (sizeof(CString)*i); }Btw. Wie ich oben geschrieben hab, würde es sich empfehlen CStringArray zu verwenden. Es ist Gott sei Dank nicht so, dass man es verwenden muss. Für den Verschreiber (CStrArray statt CStringArray) entschuldige ich mich.
-
-
@unregistrierter
Meine Rede
-
Ich bin net unregistriert, aber jedesmal, wenn ich nen neuen Beitrag schreibe, bin ich es wieder, obwohl ich mich vorher eingeloggt habe. ärger
-
Jetzt verstehe ich auch was du meintest mit wenn i==0

-
Dankeschön, für die vielen Antworten. Ich werde das mit dem CStringArray mal probieren.
MfG
Patrick