URL: https://www.overclockers.at/coding-stuff/c_konsole_mit_mfc_19912/page_1 - zur Vollversion wechseln!
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
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
Dann schau halt im Debugger, was schief läuft.
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
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...
also ich hätt das mit PHP gemacht ... fast gleiche syntax aber kein nerviger compiler
cy
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