Forum: PC-Programmierung MFC: 'wchar_t *' kann nicht in 'char' konvertiert werden


von coder (Gast)


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
  }

von Rufus Τ. F. (rufus) Benutzerseite


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?

von coder (Gast)


Lesenswert?

Wo genau muss ich in meiner Compilereinstellung was verändern?
Ich konnte unter Eigenschaften nichts finden.

von coder (Gast)


Lesenswert?

Also Unicode habe ich schon deaktiviert. Wo kann ich ANSI einstellen?

von coder (Gast)


Lesenswert?

Ok ich habs gefunden. Es tut jetzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.