C++ Konsole mit MFC

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_konsole_mit_mfc_19912/page_1 - zur Vollversion wechseln!


Bimminger schrieb am 10.12.2001 um 09:34

Dieser Code stürzt ab... im makebak bereich... wer weis wieso?

// htmlcoder.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include "htmlcoder.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Das einzige Anwendungsobjekt

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// MFC initialisieren, Ausgabe und Fehlermeldung bei Fehlern
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
if (argc==1)
{
cout<<"Kein Parameter angegeben\n\n";
cout<<"Aufruf: htmlcoder <filename> [/makebak]\n\n";
cout<<"/makebak erstellt von der zu bearbeitenden Datei eine Sicherung mit der\n Endung .bak wobei bestehende Sicherungen überschrieben werden.\n\n";
}
else
{
CFile myfile;
char buffer[4096];
CString Filename,FilenameBak;
bool makebak=false, unknown=false;

for (UINT paramCounter=3;paramCounter<=argc;paramCounter++)
{
CString Param;
Param.Format("%s",argv[paramCounter-1]);
Param.MakeUpper();
if (Param=="/MAKEBAK")
makebak=true;
else
unknown=true;

}

if (unknown)
{
cout<<"Mindestens ein Parameter wurde nicht erkannt.\n\n";
cout<<"Aufruf: htmlcoder <filename> [/makebak]\n\n";
cout<<"/makebak erstellt von der zu bearbeitenden Datei eine Sicherung mit der\n Endung .bak wobei bestehende Sicherungen überschrieben werden.\n\n";
}
else
{

Filename.Format("%s",argv[1]);
FilenameBak.Format("%s.bak",argv[1]);
cout <<FilenameBak.GetBuffer(0);

//open source file
myfile.Open (Filename.GetBuffer(0),CFile::modeRead);
UINT filelength=myfile.Read(buffer,4096);
myfile.Close ();

CString FileContent;
FileContent.Format("%s",buffer);
FileContent=FileContent.Left(filelength);

//save bak file
if (makebak)
{
myfile.Open (FilenameBak.GetBuffer(0),CFile::modeWrite);
myfile.Write (FileContent.GetBuffer(0),FileContent.GetLength());
myfile.Close ();
}

//replace special characters
FileContent.Replace("ä","ä");

//write dest file
myfile.Open (Filename.GetBuffer(0),CFile::modeWrite);
myfile.Write(FileContent.GetBuffer(0),FileContent.GetLength());
myfile.Close ();
}
}
}

return nRetCode;
}


thx, CB


Bimminger schrieb am 10.12.2001 um 09:36

koompileren, und aufruf mit zB htmlcoder c:\source.htm /makebak

ohne dem makebak gehts.... dh derselbe code der ja weiter unten die output-file schreibt,.....

mfG CB


Ringding schrieb am 10.12.2001 um 13:11

Dann schau halt im Debugger, was schief läuft.


Bimminger schrieb am 10.12.2001 um 14:28

im debugger hab i netürlich scho nachgsehn. eh klar. aba da erkennt ma a nix.

-> er erkennt den absturz im CFile::Write, aba wenn i ma de Ursache im main anseh dann erkennt er dass er scho im CFile::Close is...

und der Source is ansich genau derselbe fürs speichern der bakfile und der outputfile... nur bei der bak geht er eben net.

mfG CB


Bimminger schrieb am 10.12.2001 um 14:33

aaahm sorry.. jetzt gehts eh scho. hab nur das modeCreate für die bak-file net gmacht...

mfG CB

ps: wenn das tool wer braucht... is zum umlaute in code verwandeln f. HTML... gibts zum Download im "Website FF Neukematen" thread...


bBU.CyTrobIc schrieb am 10.12.2001 um 15:19

also ich hätt das mit PHP gemacht ... fast gleiche syntax aber kein nerviger compiler :D

cy


Bimminger schrieb am 10.12.2001 um 15:23

MIR IS WICHTIG das es a compiler-sprache is... naja - die alte einstellung zu interpretern halt ;-) also ich bin wür BINARIES!!

mfG CB




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025