aus Stringliste in Klasse schreiben
-
Person *Karl; ... Karl = new Person; ... // da zahl1 und zahl2 ja public sind Karl->zahl1 = StrToInt(StringList->Strings[0]); // 1. String zuweisen Karl->zahl2 = StrToInt(StringList->Strings[1]); // 2. String zuweisen ... delete Karl;
-
Somit kann ich einmal was in die Klasse schreiben, aber wenn ich nun mehrere Personen habe und dies in die Klasse schreiben will, wie geht das ?
Ich müsste ja mehrere Objekte (1 Person = 1 Objekt) haben, die ich am Anfang noch nicht kenne. Aber gehen wir einfach mal davon aus, dass es 2 Personen gibt, für die ich Daten angeben soll. Wie mach ich das dann mit der Klasse und in Bezug auf die StringList ?
-
Kenntnisse der C++-Grundlagen sind in solchen Situationen sehr hilfreich...
-
Stichwort: Container-Klassen
oder zum Anfang Arrays
-
wieso ist der destruktor fehlerhaft?
typedef unsigned int u_int; u_int AnzahlPersonen = 10; Person *Personen = new Person[AnzahlPersonen]; for (u_int i = 0; i < AnzahlPersonen; ++i) { ZehnPersonen[i].zahl1 = 1; ZehnPersonen[i].zahl2 = 2; } delete [] Personen;
-
Das kommt nun in die Klasse oder wie ?
und was mach ich dann, wenn es 5 oder 500 Personen sind, die ich als Objekt anlegen muss ?
-
#include <vector> ... int main() { vector <Person> Personen; Person Einzelner; for(int i=0;i<100;i++) { Einzelner.setzahl1(i); Einzelner.setzahl2(100-i); Personen.push_back(Einzelner); } return 0; }
-
Person Einzelner;Damit haste aber nur eine Instanz erzeugt und nicht viele !
vector <Person> Personen;Damit haste mehrere erzeugt

Trotzdem will ich mal wissen, wie das mit der StringList geht. Wie kann ich Objekte in die StringList einfügen und dann wieder auslesen ?
Die Methode AddObject fügt der Liste einen String hinzu und ordnet dem String ein Objekt zu.
virtual int __fastcall AddObject(const AnsiString S, System::TObject* AObject);
Dies ist ein Auszug aus der Hilfe, aber ich verstehe nicht ganz was die ganzen allgemeinen Begriffe mir sagen. Wie muss da jetzt der Befehl aussehen, wenn ich eine Person hineinadden will und wie sieht das dann bei der zweiten Person aus ?
-
#include <iostream> #include <vcl.h> #include "Person.h" ; int main(int argc, char* argv[]) { Person *personendaten; // Speicher für Person reservieren TStringList *MeineListe = new TStringList(); int zahl1, zahl2; AnsiString Test = "Test"; cout << "Sie werden hier die Moeglichkeit haben bestimmte Daten einzugeben." << endl; cin >> zahl1; // Eingabe des ersten Wertes cin >> zahl2; // Eingabe des zweiten Wertes /* -- Standard das geht -- */ //zahl1 = personendaten->setzahl1(zahl1); //zahl2 = personendaten->setzahl2(zahl2); MeineListe->Insert(0, zahl1); MeineListe->Insert(1, zahl2); personendaten->setzahl1(StrToInt(MeineListe->Strings[0])); personendaten->setzahl2(StrToInt(MeineListe->Strings[1])); personendaten->getzahl1(); personendaten->getzahl2(); MeineListe->AddObject("Test", personendaten); cin.get(); // Hier wird der Puffer geleert cin.get(); // Hier wird die Eingabe einer beliebigen Taste erwartet return 0; }Dies ist meine main.cpp, aber ich hab eine Frage zu dem Befehl AddObject. Ist diese Zeile richtig mit dem Befehl oder hab ich hier einen Fehler drin ?
MeineListe->AddObject("Test", personendaten);Dies würde mich mal interessieren !
-
Das Zitat solltest du dir zu Herzen nehmen!
Joe_M. schrieb:
Kenntnisse der C++-Grundlagen sind in solchen Situationen sehr
hilfreich...Dein Programm produziert undefiniertes Verhalten.