MFC: 'wchar_t *' kann nicht in 'char' konvertiert werden

Gast #1610773
Lesenswert?

Ich möchte mit MFC ein Dialog öffnen, mit dem ich dann eine BITMAP Datei 
auswählen kann. Beim compilieren wird folgende Fehlermeldung erzeugt:

Fehler  1  error C2440: '=': 'wchar_t *' kann nicht in 'char' 
konvertiert werden

1
FILE *fp;
2
  CString filename;
3
  char *filenamechar;
4
  RGBTRIPLE *bild;
5

6
  CFileDialog dialog(TRUE);
7
  CClientDC dc(this);
8

9
  if (dialog.DoModal()==IDOK)
10
  {
11
    filename = dialog.GetFileName();
12
  }
13

14
  filenamechar=filename.GetBuffer(filename.GetLength());
15
  fp=fopen(filenamechar,"rb");
16
  if (fp==NULL) 
17
  {
18
    MessageBox("Datei konnte nicht geöffnet werden","Fehler",MB_OK);
19
  }
Persönliche Seite #1610836
Lesenswert?

Überprüfe die Compilereinstellungen, es sieht so aus, als würdest Du mit 
Unicode-Einstellungen übersetzen. Ändere das zu ANSI, dann sollte es 
gehen.

Wobei bei rein lesendem Zugriff der Umweg über CString::GetBuffer nicht 
nötig ist, CString kann direkt anstelle von char* verwendet werden, so 
daß Du anstelle von

  filenamechar=filename.GetBuffer(filename.GetLength());
  fp=fopen(filenamechar,"rb");

einfacher schreiben kannst

  fp=fopen(filename,"rb");


Du solltest Dir noch mal Gedanken über Deinen Programmablauf machen - 
filename änderst Du, wenn der Dialog mit OK beendet wird. Aber darauf 
zugreifen tust Du auch, wenn der Dialog nicht mit OK beendet wird, 
also filename nur durch den Default-Konstruktor von CString 
initialisiert wurde.

Ist es nicht sinnvoller, den die Datei öffnenden Code nur dann 
auszuführen, wenn der Dialog mit OK beendet wurde?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren