Avatar billede bjering Nybegynder
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.
Avatar billede arne_v Ekspert
15. februar 2004 - 20:44 #1
void log(char *text);

burde være nok som erklæring i Logging.h
Avatar billede bjering Nybegynder
15. februar 2004 - 20:52 #2
så får jeg en
D:\c++ projects\Update\UpdateDlg.cpp(136) : error C2065: 'log' : undeclared identifier
Avatar billede bjering Nybegynder
15. februar 2004 - 20:53 #3
jeg har included min Logging.h fil i UpdateDLG.cpp
Avatar billede arne_v Ekspert
15. februar 2004 - 20:55 #4
Indeholder UpdateDlg.cpp linie 136:

log("hello");

?
Avatar billede arne_v Ekspert
15. februar 2004 - 20:56 #5
Du har ikke nogle #IFDEF eller /* */ i Logging.h som laver ged i det ?
Avatar billede bjering Nybegynder
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_)
Avatar billede arne_v Ekspert
15. februar 2004 - 21:00 #7
void log(char *text);

er da ikke erklæret i den Logging.h fil !
Avatar billede bjering Nybegynder
15. februar 2004 - 21:01 #8
i min dlg fil linie 136 stod der

log("Write sucess");

bare for at teste
Avatar billede arne_v Ekspert
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.
Avatar billede arne_v Ekspert
15. februar 2004 - 21:02 #10
Flyt:

void log(char *text);

ud af Logging klassen, så slipper du af med den fejl !
Avatar billede arne_v Ekspert
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.
Avatar billede bjering Nybegynder
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
Avatar billede bjering Nybegynder
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..
Avatar billede arne_v Ekspert
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 { }
Avatar billede arne_v Ekspert
15. februar 2004 - 21:22 #15
Ellers må du lave implementeringen og kaldet om til objekt orienteret.
Avatar billede bjering Nybegynder
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.
Avatar billede arne_v Ekspert
15. februar 2004 - 22:01 #17
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester