Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich schreibe einen organizer mit vs c++ und habe für die daten eine klasse erstellt:

ref class kontakt

{

public:

String^ Name;

Int32 tag;

Int32 jahr;

String^str;

Int32 nr;

Int32 p;

String^ort;

String^fest;

String^h;

};

die instanz habe ich als objekt der form1 klasse deklariert:

~Form1()

{

if (components)

{

delete components;

}

}

private: System::Windows::Forms::ListBox^ listBox1;

private: System::Windows::Forms::Label^ name;

private: System::Windows::Forms::Label^ bday;

private: System::Windows::Forms::Label^ straße;

private: System::Windows::Forms::Label^ Nr;

private: System::Windows::Forms::Label^ plz;

private: System::Windows::Forms::Label^ Ort;

private: System::Windows::Forms::Label^ tel;

private: System::Windows::Forms::Label^ handy;

private: System::Windows::Forms::Panel^ panel1;

private: array<kontakt^>^test; //hier

...

und initialisiere sie wie alle andere objekte:

void InitializeComponent(void)

{

this->test=gcnew array<kontakt^>(300);

this->listBox1 = (gcnew System::Windows::Forms::ListBox());

...

nun lese ich die kontaktdaten ein :

try

{

fs= gcnew FileStream(dateiname,FileMode::Open);

sr= gcnew StreamReader(fs);

//Datei durchgehen

while(sr->Peek() !=-1)

{

zeile=sr->ReadLine();

daten=zeile->Split(zeichen);

test[loop]->Name=daten[0]; //FEHLER!!!!

test[loop]->tag=Convert::ToInt32(daten[1]);

test[loop]->jahr=Convert::ToInt32(daten[2]);

test[loop]->str=daten[3];

test[loop]->nr=Convert::ToInt32(daten[4]);

test[loop]->p=Convert::ToInt32(daten[5]);

test[loop]->ort=daten[6];

test[loop]->fest=daten[7];

test[loop]->h=daten[8];

listBox1->Items->Add(daten[0]);

++loop;

}

...

sobald die instanz ins spiel kommt gibt mir meine catch exeption folgenden fehler:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt

außerdem: "System.NullReferenceException"

ich hoffe ihr könnt mir weiter helfen

lg valle

hm.. ich hab jetzt noch einen konstruktor

hinzugefügt.

ref class kontakt

{

public:

String^ Name;

Int32 tag;

Int32 jahr;

String^str;

Int32 nr;

Int32 p;

String^ort;

String^fest;

String^h;

kontakt();

};

kontakt::kontakt()

{

Name="";

tag=0;

jahr=0;

str="";

nr=0;

p=0;

ort="";

fest="";

h="";

}

gibt immer noch die gleiche fehlermeldung aber das meintest du nicht oder?

ja wenn ich:

this->test=gcnew kontakt;

schreibe funktioniert auch alles aber wie mach ich dann einen array?

ja wenn ich:

this->test=gcnew kontakt;

schreibe funktioniert auch alles aber wie mach ich dann einen array?

Wenn du ein kontakt^ hast, machst du das einmal.

Und wenn du ein Array von 300 kontakt^ hast, machst du das eben dreihundertmal. In der Schleife würde sich anbieten.

Bisher hast du nur ein Array von 300 Null-Referenzen. test[loop] ist Null, weil du nirgends auch nur eine einzige Referenz in dem Array auf ein tatsächliches Objekt verweisen lässt.

jetzt hab ichs verstanden thx

valle

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.