mikrocontroller.net

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


Autor: coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

FILE *fp;
  CString filename;
  char *filenamechar;
  RGBTRIPLE *bild;

  CFileDialog dialog(TRUE);
  CClientDC dc(this);

  if (dialog.DoModal()==IDOK)
  {
    filename = dialog.GetFileName();
  }

  filenamechar=filename.GetBuffer(filename.GetLength());
  fp=fopen(filenamechar,"rb");
  if (fp==NULL) 
  {
    MessageBox("Datei konnte nicht geöffnet werden","Fehler",MB_OK);
  }

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: coder (Gast)
Datum:

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

Autor: coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Unicode habe ich schon deaktiviert. Wo kann ich ANSI einstellen?

Autor: coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok ich habs gefunden. Es tut jetzt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.