Windows Forms Exception
-
Ich möchte gerne unter Visual C++ einen ganz normen Dialog zum Öffnen eines Files in ein Forms Fenster implementieren (openFileDialog). Der Dialog liefert mir zwar den Pfad und den Filenamen, führt aber an teilweise unvorhersehbaren Stellen (z.B. beim Öffnen der ausgewählten Datei mit fopen) zu einer Exception mit ff. Wortlaut:
Eine nicht behandelte Ausnahme des Typs "SystemAccessViolationException" ist in System.Windows.Forms.dll aufgetreten
Zusätzliche Information:Es wurde versucht, im geschützten Speicher zu lesen oder schreiben.Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt beschädigt ist.Dies passiert, wie gesagt, nur bei Verwendung des FileDialogs.
Besten Dank für die Hilfe schon im voraus.
-
1. Falsches Forum (=> C++/CLI)
2. Mach bitte kein WinForms mit C++/CLI, sondern nimm C#!!!
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dann tu es debuggen - dann findest Du raus wo das Problem ist.
-
Hi,
danke für die Hilfe, habe den Fehler gefunden, er lag ganz woanders:
Der OpenFileDialog liefert die Dateiangabe im Format ^String zurück.
Dieser Parameter wird in ein *char mit ff. Prozedur umgewandelt:
char * RainbowTable::Form1::DoSetFileName()
{
RainbowTest ^RTest;
char *stringnew;
int i;
array<Char>^ stringarray=this->openFileDialog1->FileName->ToCharArray();
stringnew = new char[stringarray->LongLength+1];
for(i=0;i<stringarray->LongLength;i++)
{
stringnew[i]=stringarray[i];
}
stringnew[i]='\0';
return(stringnew);
}
für den Zeiger stringnew wurde einfach nicht genug Speicherplatz reserviert:
ursprünglich:
stringnew = new char[stringarray->LongLength];
-
Unglaublich...
Siehe mal hier:
http://www.c-plusplus.net/forum/158664