15. februar 2004 - 20:29
Der er
16 kommentarer og 1 løsning
Meget STOR spørgsmål omkring MFC Appl.
Ved ikke hvordan jeg skal beskrive det men prøver. Okay jeg sider har, har lave en ny MFC dialog application, den har some default de her filer: Update.cpp UpdateDLG.cpp Update.h UpdateDLG.h Jeg adder så en ny Generic cWnd class der hedder Logging så jeg får 2 nye filer : Logging.cpp Logging.h I min logging.cpp fil har jeg en void f.eks void log(char *text) { // open log file FILE *fp = fopen("log\\logfile.txt", "a"); if (fp) { // time log CString d = datetime(); // write to logfile fprintf(fp,"%s",d); fprintf(fp," => %s\n",text); // close log file fclose(fp); } return; } hvordan laver jeg så, så jeg kan skrive til den via : log("hello"); fra min UpdateDLG.cpp fil. hvilken ting skal jeg adde til min Logging.h fil under class ting, og hvad skal jeg ellers adde (f.eks i Update.h filen) for at det virker ? Tror det er et svært spørgsmål, og få det her at vide er alfa og omega for mig, så sætter et svar der virker til 200 points. Glæder mig til at høre fra jer. MVH. Bo B.
Annonceindlæg fra Salesforce
15. februar 2004 - 20:44
#1
void log(char *text); burde være nok som erklæring i Logging.h
15. februar 2004 - 20:52
#2
så får jeg en D:\c++ projects\Update\UpdateDlg.cpp(136) : error C2065: 'log' : undeclared identifier
15. februar 2004 - 20:53
#3
jeg har included min Logging.h fil i UpdateDLG.cpp
15. februar 2004 - 20:55
#4
Indeholder UpdateDlg.cpp linie 136: log("hello"); ?
15. februar 2004 - 20:56
#5
Du har ikke nogle #IFDEF eller /* */ i Logging.h som laver ged i det ?
15. februar 2004 - 20:58
#6
her er min komplettet logging.cpp fil // Logging.cpp : implementation file // #include "stdafx.h" #include "Update.h" #include "Logging.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // Logging Logging::Logging() { } Logging::~Logging() { } BEGIN_MESSAGE_MAP(Logging, CWnd) //{{AFX_MSG_MAP(Logging) // NOTE - the ClassWizard will add and remove mapping macros here. //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // Logging message handlers CTime theTime; int datetime() { theTime = CTime::GetCurrentTime(); theTime.Format( "%H:%M:%S : " ); return -1; } void log(char *text) { // open log file FILE *fp = fopen("log\\logfile.txt", "a"); if (fp) { // time log CString d = datetime(); // write to logfile fprintf(fp,"%s",d); fprintf(fp," => %s\n",text); // close log file fclose(fp); } return; } void errorlog(char *text) { // open log file FILE *fp = fopen("log\\errorlog.txt", "a"); if (fp) { //time log CString d = datetime(); // write to logfile fprintf(fp,"%s",d); fprintf(fp," => %s\n",text); // close log file fclose(fp); } return; } og min complettet logging.h fil #if !defined(AFX_LOGGING_H__E5FCD6A1_A249_47B8_9A0B_77B978CCB1C9__INCLUDED_) #define AFX_LOGGING_H__E5FCD6A1_A249_47B8_9A0B_77B978CCB1C9__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // Logging.h : header file // ///////////////////////////////////////////////////////////////////////////// // Logging window class Logging : public CWnd { // Construction public: Logging(); void log(char *text); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(Logging) //}}AFX_VIRTUAL // Implementation public: virtual ~Logging(); // Generated message map functions protected: //{{AFX_MSG(Logging) // NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_LOGGING_H__E5FCD6A1_A249_47B8_9A0B_77B978CCB1C9__INCLUDED_)
15. februar 2004 - 21:00
#7
void log(char *text); er da ikke erklæret i den Logging.h fil !
15. februar 2004 - 21:01
#8
i min dlg fil linie 136 stod der log("Write sucess"); bare for at teste
15. februar 2004 - 21:01
#9
Du har erklæret en: void log(char *text); som member af Logging klassen. Det er noget helt andet.
15. februar 2004 - 21:02
#10
Flyt: void log(char *text); ud af Logging klassen, så slipper du af med den fejl !
15. februar 2004 - 21:03
#11
Alternativt skal i Logging.cpp lave log om til Logging::log og have fat i et Logging objekt der hvor skal logge noget.
15. februar 2004 - 21:17
#12
ja men jeg ville jo gerne have det sådan her så jeg kan holde styr på ting.. f.eks alt med log ligger i logging.cpp alt med f.eks winsock kommer i en ny fil f.eks Winsock.cpp
15. februar 2004 - 21:18
#13
lagde mærke til nogle steder hvor de bruger en slags templates (sådan de senere kan hente filerne ind og bruge dem i andre projecter) syntes det var sådan de gjorde det..
15. februar 2004 - 21:21
#14
Du kan da godt have: void log(char *text); i Logging.h den skal bare udenfor class Logging : public CWnd { }
15. februar 2004 - 21:22
#15
Ellers må du lave implementeringen og kaldet om til objekt orienteret.
15. februar 2004 - 21:59
#16
ejda hvorfor sagde du ikke det med det samme, nu virker det jo lol.. anyways, skriv lige et svar, du har fortjent de points (for det her manglede jeg 100% at lære) så helt klart, du har fortjent dem.
15. februar 2004 - 22:01
#17
ok
Kurser inden for grundlæggende programmering