Problem bei CString zu verwenden

Schnelle objektorientierte, kompilierende Programmiersprache.
Chunya
Beiträge: 16
Registriert: Do Feb 13, 2014 10:22 pm

Problem bei CString zu verwenden

Beitrag von Chunya » Mo Feb 24, 2014 3:17 pm

Guten Tag,

ich möchte so was in C++ Visual Studio 2012 benutzen.

Code: Alles auswählen

#include "stdafx.h"

#include <stdio.h>
//#include <afx.h>
#include <string.h>
#include <iostream>
#include "uEye.h"

using namespace std;

CString Str; 
  Str.Format("%02d.%02d.%04d, %02d:%02d:%02d:%03d",
   .....
  );
Dazu habe ich in Visual Studio eingestellt.
Properties - Konfigurationseigenschaften - Allgemein
Verwendung von MFC: MFC in einer gemeinsam genutzten Dll verwenden.

Nach kompilieren habe ich die Fehlermeldung bekommen:

Code: Alles auswählen

C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
Dann habe ich in stdafx.h Datei "define _WIN32_WINNT " und "#include <afx.h>" hinzugeführt. Es sieht so aus:

Code: Alles auswählen

#define _WIN32_WINNT
#pragma once
#include <afx.h>
#include "targetver.h"
#include <stdio.h>
#include <tchar.h>
Nach der Kompilierung kommt aber noch eine Fehlermeldung vor:

Code: Alles auswählen

d:\programm\microsoft studio 2012\installation\vc\atlmfc\include\afxv_w32.h(35): fatal error C1017: Ungültiger Ausdruck für Ganzzahlkonstante
Könnte Jemand mir helfen? Vielen Dank.

Viele Grüße,
Chunya

Edit by cloidnerux: Code-Tags

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem bei CString zu verwenden

Beitrag von cloidnerux » Mo Feb 24, 2014 3:28 pm

Guten Tag,
Hi und Willkommen im Forum :D
ich möchte so was in C++ Visual Studio 2012 benutzen.
Gibt es einen Grund, warum du "cstring" verwenden willst gegenüber der C++ string Klasse oder klassischen C-Strings?
Nach kompilieren habe ich die Fehlermeldung bekommen:

Code: Alles auswählen

C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
Dein Compiler sagt hier mal ganz klar aus, dass du entweder die Windows-API nutzt oder MFC, von daher darfst du die windows.h nicht einbinden.

Zudem sieht das:

Code: Alles auswählen

#define _WIN32_WINNT
für mich falsch aus. Ich bezweifle, dass du noch irgendwas für Windows-NT machen willst?
Nach der Kompilierung kommt aber noch eine Fehlermeldung vor:

Code: Alles auswählen

d:\programm\microsoft studio 2012\installation\vc\atlmfc\include\afxv_w32.h(35): fatal error C1017: Ungültiger Ausdruck für Ganzzahlkonstante
sieht stark so aus, als wäre die Datei afxv_w32.h nicht für deinen Compiler geeignet: Hast du ein reines C++ Projekt, Win32 oder ein Visual-C++ Projekt(mit .NET Anbindung)?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Chunya
Beiträge: 16
Registriert: Do Feb 13, 2014 10:22 pm

Re: Problem bei CString zu verwenden

Beitrag von Chunya » Mo Feb 24, 2014 4:13 pm

Hallo Cloidnerux,

ich glaube, dass ich ein Win32 Projekt habe.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Problem bei CString zu verwenden

Beitrag von Xin » Mo Feb 24, 2014 4:16 pm

Chunya hat geschrieben: Dann habe ich in stdafx.h Datei "define _WIN32_WINNT " und "#include <afx.h>" hinzugeführt.
Öhm... ich denke, der Compiler definiert sein System besser selbst?!
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem bei CString zu verwenden

Beitrag von cloidnerux » Mo Feb 24, 2014 4:19 pm

ich glaube, dass ich ein Win32 Projekt habe.
Dann solltest du wrsl nicht MFC verwenden, oder wenn es MFC sein muss eine entsprechende Projektvorlage nehmen.

Wenn es nur um die Möglichkeit geht, Texte objektorierentiert zu verwenden, schau dir die C++ strings an(http://www.cplusplus.com/reference/string/string/)

Dann noch die generelle Frage: Muss es die Windows-API oder MFC sein, brauchst du das überhaupt? Oder würde ein einfach Terminal-Programm mit Standard C/C++ nicht auch reichen?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Chunya
Beiträge: 16
Registriert: Do Feb 13, 2014 10:22 pm

Re: Problem bei CString zu verwenden

Beitrag von Chunya » Mo Feb 24, 2014 4:22 pm

Hallo Cloidnerux,

nein, muss es nicht so sein.
Ein einfach Terminal-Programm mit Standard C/C++ reicht es schon.

Viele Grüße,
Chunya

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem bei CString zu verwenden

Beitrag von cloidnerux » Mo Feb 24, 2014 4:33 pm

Ein einfach Terminal-Programm mit Standard C/C++ reicht es schon.
Dann lass den ganzen Quatsch mit MFC und CString, leg ein neues Projekt an:
Datei->Neu->Projekt->Visual C++->Allgemein->Leeres Projekt
Füg eine Datei main.cpp hinzu und arbeite mit normalen C++ und der STL.
Oder orientiere dich an unserem C/C++ Tutorial: http://www.proggen.org/doku.php?id=c:start
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem bei CString zu verwenden

Beitrag von cloidnerux » Mo Feb 24, 2014 4:33 pm

Ein einfach Terminal-Programm mit Standard C/C++ reicht es schon.
Dann lass den ganzen Quatsch mit MFC und CString, leg ein neues Projekt an:
Datei->Neu->Projekt->Visual C++->Allgemein->Leeres Projekt
Füg eine Datei main.cpp hinzu und arbeite mit normalen C++ und der STL.
Oder orientiere dich an unserem C/C++ Tutorial: http://www.proggen.org/doku.php?id=c:start
Redundanz macht wiederholen unnötig.
quod erat expectandum

Chunya
Beiträge: 16
Registriert: Do Feb 13, 2014 10:22 pm

Re: Problem bei CString zu verwenden

Beitrag von Chunya » Mo Feb 24, 2014 10:35 pm

Guten Tag,

meine Aufgabe ist eigentlich so, dass die Zeit und Datum zu zugreifen bzw. darstellen.
Es zeigt ein Beispiel mit CString str hier:

Code: Alles auswählen

 CString Str; //Zeitstemopel in Systemzeit auslesen
  Str.Format("%02d.%02d.%04d, %02d:%02d:%02d:%03d",
	                  ImageInfo.TimestampSystem.wDay,
			  ImageInfo.TimestampSystem.wMonth,
			  ImageInfo.TimestampSystem.wYear,
			  ImageInfo.TimestampSystem.wHour,
			  ImageInfo.TimestampSystem.wMinute,
			  ImageInfo.TimestampSystem.wSecond,
			  ImageInfo.TimestampSystem.wMilliseconds);
wobei ImageInfo.TimestampSystem.wDay/..../wMilliseconds sind von Type WORD.
Edit by cloidnerux: Code-Tags

As oberen genannt, gibt es auch eine Möglichkeit mit std::string statt CString zu verwenden. Könnte Jemand vielleicht eine Idee geben, wie kann ich das mit std::string realisieren?
Vielen Dank!

Viele Grüße,
Chunya

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem bei CString zu verwenden

Beitrag von cloidnerux » Mo Feb 24, 2014 10:40 pm

meine Aufgabe ist eigentlich so, dass die Zeit und Datum zu zugreifen bzw. darstellen.
Es zeigt ein Beispiel mit CString str hier:
Den Einfachsten fall zeigt die Dokumentation zu den Datum und Uhrzeitfunktionen:
http://www.proggen.org/doku.php?id=c:lib:time:strftime
As oberen genannt, gibt es auch eine Möglichkeit mit std::string statt CString zu verwenden. Könnte Jemand vielleicht eine Idee geben, wie kann ich das mit std::string realisieren?
Vielen Dank!
Und nochmal eine generelle Frage: hast du von deinem Lehrer/Tutor die Aufgabe und Beispielcode bekommen, hast du nur die Aufgabe bekommen und den Code irgendwo gefunden oder in welchen Zusammenhang steht das ganze?
Auch kannst du dich gerne hier in der User-Vorstellung vorstellen, damit man weiß, mit wem man es zu tun hat :)
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten