F
Heinerich schrieb:
Heinerich schrieb:
Hallo
Das Programm wird Fehlerfrei kompiliert und startet auch.
Aber wenn ich das Programm mit dem Exe Button im debug-Ordner starte blinkt es nur kurz azf und ist weg, warum?
[code]
#include "stdafx.h"
using namespace System;
ref struct listenelement {
String^ daten;
listenelement^ next;
listenelement^ previous; // Speichert die Vorgängeradresse
};
// neues Element am Ende der der Liste eínfügen
void einfuegen(String^ datenneu, listenelement^ listenanfang)
{
// ein Hilfshandle zum Wandern in der Liste
listenelement^ hilfsHandle;
// Hilfshandle an den Anfang der Liste setzen
hilfsHandle = listenanfang;
// ein Hilfshanele zum speichern der Vorgänger Adresse
listenelement^ previousAdresse;
// Durch die Liste gehen, bis das letzte Element erreicht ist
while (hilfsHandle->next != nullptr) {
hilfsHandle = hilfsHandle->next;
}
// die Aktuelle Adresse im Hilfshandle zwischen speichern
previousAdresse = hilfsHandle;
// neues Element erstellen
hilfsHandle->next = gcnew listenelement;
//Hilfshandle auf das neue Element setzen
hilfsHandle = hilfsHandle->next;
//Die Vorgängeradresse im neuen Hnadle speichern
hilfsHandle->previous = previousAdresse;
// Zeichenkette im neuen Element eintragen
hilfsHandle->daten = datenneu;
// nullptr wird automatisch gesetzt
}
// Alle Elemente der Liste ausgeben
void ausgeben(listenelement ^listenanfang) {
// ein Hilfshandle zum Wandern in der Liste
listenelement ^hilfsHandle;
// Hilfshandle an den Anfang der Liste setzen
hilfsHandle = listenanfang;
// erstes Element ausgeben
Console::WriteLine("{0}",hilfsHandle->daten);
// Soalange das Ende dr Liste noch nicht erreicht ist:
//HilfsHandle auf das nächse Element setzen und die Daten ausgeben
while (hilfsHandle->next != nullptr) {
hilfsHandle = hilfsHandle->next;
Console::WriteLine("{0}",hilfsHandle->daten);
}
}
int main(array<System::String ^> ^args)
{
//Handle auf den Anfang der Liste
listenelement ^listenanfang;
//das erste Element per Hand erzeugen
listenanfang = gcnew listenelement;
//Zeichenkette in das erste Element schreiben
//nullptr wird automatisch gesetzt
listenanfang->daten="Element 0";
//in einer Schleife mehrere Elemente einfügen
for (Int32 schleife=1;schleife<10;schleife++)
einfuegen("Element "+schleife,listenanfang);
//die Liste ausgeben
ausgeben(listenanfang);
return 0;
}
[/code]
Vielen Dank im Voraus
Es müsste auch über den Button im debug-Ordner starten und die zehn Listeneinträge anzeigen, wie in Visual C++ 2005 Express Edition und das tut es nicht, das wundert mich und deshalb muss etwas falsch sein. Ich weis nicht was?
tut es doch nur das DOS-Fenster wird halt automatisch wieder geschlossen, wenn sich das Programm beendet hat. Wenn du es aber über "ausführen" im Visual Studio machst, wird zusätzlich ein programm gestartet, welches am schluss deines Programms auf eine Tastatureingabe wartet um dann das Fenster zu schließen.
Entweder du baust so eine Abfrage in dein Programm ein, oder du öffnest erst die Eingabeaufforderung und startest dann von dort aus dein Programm.