Problem bei Datei Lesen
-
hier erstemal mein code;
// Entwurf 1Dlg.cpp : implementation file // #include "stdafx.h" #include "Entwurf 1.h" #include "Entwurf 1Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CEntwurf1Dlg dialog CEntwurf1Dlg::CEntwurf1Dlg(CWnd* pParent /*=NULL*/) : CDialog(CEntwurf1Dlg::IDD, pParent) { //{{AFX_DATA_INIT(CEntwurf1Dlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CEntwurf1Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CEntwurf1Dlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CEntwurf1Dlg, CDialog) //{{AFX_MSG_MAP(CEntwurf1Dlg) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CEntwurf1Dlg message handlers BOOL CEntwurf1Dlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon CenterWindow(GetDesktopWindow()); // center to the hpc screen // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } void CEntwurf1Dlg::OnButton2() { char Read(128); char str[100]; // unsigned short* a = (unsigned short *) "\\My Documents\\data.txt"; CFile datei((unsigned short *) "\\data.txt", CFile::modeRead); datei.Read(str, sizeof(str)); datei.Open((unsigned short *) "\\data.txt",NULL,NULL); datei.Close(); } void CEntwurf1Dlg::OnButton1() { char Write(128); char str[100]; // unsigned short* a = (unsigned short *) "\\My Documents\\data.txt"; CFile datei((unsigned short *) "\\data.txt", CFile::modeWrite); datei.Write(str, sizeof(str)); datei.Open((unsigned short *) "\\data.txt",NULL,NULL); datei.Close(); try { CFile datei((unsigned short *) "\\data.txt", CFile::modeWrite); datei.Write(str, sizeof(str)); datei.Close(); } catch(CFileException *e) { if (e->m_cause == CFileException::fileNotFound) printf("Datei wurde nicht gefunden\n"); e->Delete(); } }wennsch dann jetzt das programm übertrage. es startet aber sobald ich auf einen button klicke, kommt nur das hier
ΠΠΠΠΠt was not found
und warum bitteschön, müsste doch eiegntlich gehen. die datei habsch auch mal auf dummen dunnst mit in den ordner gepackt. auf dem gerät is sie sowieso.
meine umgebung:
embedded visual c++ 4.0
windows ce 4.2vielen dank für die hilfe
-
Dein Versuch, String-Literale per Cast (
(unsigned short *) "...") als UNICODE-Strings umzudeuten, ist schon im Ansatz zum Scheitern verursacht - verwende lieber gleich wide-Strings (TEXT("...")oderL"...") verwenden.(lass mich raten - die Cast's hast du eingebaut, nachdem der Compiler auf fehlende Konvertierungen von char[...] nach unsigned short* aufmerksam gemacht hat)
-
meinst du mit den casts diese teile hier (//) wenn ja, nein hab ich nicht. bei mir kommt kein fehler, also das programm lässte sich komplett debugen.
hab nur gedacht vielleicht liegt es an dem pfad oder so.kannst mit das mal mit den wide-strings anhand meines codes zeigen. bin noch absoluter neuling in c++. wäre echt der hit
-
Das ist ein cast:
(unsigned short *)Und du sollst mal das versuchen:
CFile datei(TEXT("\\data.txt"), CFile::modeWrite);Wobei ich mir die Frage stelle, wo die Datei relativ zu deiner Exe gesehen liegt.
\\datei.txt kommt mir so falsch vor.
.\\datei.txt wäre das aktuelle Verzeichnis und ..\\datei.txt das darüber.
Aber was ist \\datei.txt?
-
estartu schrieb:
Das ist ein cast:
(unsigned short *)Und du sollst mal das versuchen:
CFile datei(TEXT("\\data.txt"), CFile::modeWrite);Wobei ich mir die Frage stelle, wo die Datei relativ zu deiner Exe gesehen liegt.
achso, das ist ein cast. naja wieder was dazugelernt

\\datei.txt kommt mir so falsch vor.
.\\datei.txt wäre das aktuelle Verzeichnis und ..\\datei.txt das darüber.
Aber was ist \\datei.txt?das ist auch falsch, meine natürlich den gleichen pfad wie ich den bei der einen zeile auskommentiert habe. sorry mein fehler
-
wenn ich jetzt aus der txt datei etwas zeilenweise auslesen möchte, wie realisere ich das
-
Schau mal, ob CStdioFile bei dir geht.

-
1. TEXT("abc") ist kein cast, sondern ein Makro, der einen Unicode String aus der Konstante macht. Besser man verwendet _T!
2. "\\datei.txt" öffnet die Datei datei.txt im Rootverzeichnis der Festplatte die durch das current working sdirectory definiert wird.
3. ".\\datei.txt" öffnet nicht die Datei in dem Verzeichnis in dem die EXE steht, sonder die Datei im current working directory!
-
Martin Richter schrieb:
1. TEXT("abc") ist kein cast, sondern ein Makro, der einen Unicode String aus der Konstante macht. Besser man verwendet _T!
Wieso hast du dann oben TEXT genannt? Ich dachte, du hättest dir dabei was gedacht und habe es daher verwendet. (Könnte ja sein, dass _T bei embedded nicht geht.)
-
jep CStdioFile das funktioniert.
muss ich dann mal kucken wie das funktioniert damit. oder kannst du mir das vielleicht sagen.
-
Magst du die Forensuche nicht?

Der Post von abrissbirne: http://www.c-plusplus.net/forum/viewtopic-var-t-is-189775-and-highlight-is-cstdiofile.html
-
estartu schrieb:
Martin Richter schrieb:
1. TEXT("abc") ist kein cast, sondern ein Makro, der einen Unicode String aus der Konstante macht. Besser man verwendet _T!
Wieso hast du dann oben TEXT genannt? Ich dachte, du hättest dir dabei was gedacht und habe es daher verwendet. (Könnte ja sein, dass _T bei embedded nicht geht.)
Verwechselst Du mich mit CStoll?
Ich habe nur einmal geantwortet bisher
Grundsätzlich empfehle ich nie TEXT. Ich rate immer zu den T-Makros.tchar.h gibt es auch in Embedded...
-
_T ist doch das selbe wie TEXT oder nicht???
-
Es hat eine ähnliche Funktion. Nur ist das eine CRT verankert und das andere im Windows SDK. Es ist in keinem Fall das selbe!
So reagiert TEXT auf das define UNICODE und _T auf den define _UNICODE.

Ich verwende lieber konsisten dir CRT Variante.Siehe dazu auch:
http://blog.m-ri.de/index.php/2007/05/31/_unicode-versus-unicode-und-so-manches-eigentuemliche/
Nett nicht.
-
Martin Richter schrieb:
Verwechselst Du mich mit CStoll?
Oh ja, entschuldige.
Mir ist _T lieber... man ist ja faul.

-
hätte da mal noch ne frage, ich will sagen (durch ein editfeld) was in die txt datei geschrieben wird. müsste ich ja eigenlich nur ne variable deklarieren und der die edit box zuweisen. habs probiert aber funktioniert nicht (statts str ein a eingefügt und dann = idc_edit1), warum?!
genau das gleiche will ich bei dem lesen machen, also es soll halt in dem editfeld stehen!?
vielen dank für die bisherige hilfe*thx*
-
hab mir auch grad mal die datei angekuckt, also schreiben scheint zu funktionieren. aber in der datei stehen jetz nur wieder irgendwelche zeichen. nichts von text oder so