Kilian1312
Grünschnabel
Hallo liebe Community,
ich hab ein Problem und zwar schaff ich es seit 3 Tagen nicht die Speicheradresse einer Membermethode als Parameter einer anderen Funktion zu übergeben
Importing() -> in static_clPlot
| ruft LoadFile(&FileName_, *pProcAdr_) -> in CLogObj auf
| ruft LoadFile(&Filename_) -> in CLogObj auf
| ruft DecodeBuffer(&TsError) -> in CLogObj auf
v
ruft ExportBuffer(pObj, &TsError)
Vielen Dank im vorraus!!
ich hab ein Problem und zwar schaff ich es seit 3 Tagen nicht die Speicheradresse einer Membermethode als Parameter einer anderen Funktion zu übergeben
Importing() -> in static_clPlot
| ruft LoadFile(&FileName_, *pProcAdr_) -> in CLogObj auf
| ruft LoadFile(&Filename_) -> in CLogObj auf
| ruft DecodeBuffer(&TsError) -> in CLogObj auf
v
ruft ExportBuffer(pObj, &TsError)
Code:
static_clPlot.h
Class static_clPlot
{
public:
bool ExportBuffer(RECORD_TYPE *pObj, BOOL *TsError);
private:
BOOL Importing();
}
static_clPlot.cpp
BOOL static_clPlot::Importing()
{
CLogObj *pLog;
RECORD_TYPE *pObj;
BOOL TsError;
// Programmadresse hier als Parameter übergeben
if ((LogObj.LoadFile((string)m_Log_File_Name, &********)!=0))
{
.
.
.
.
}
LogObj.SetRecordIdx(0);
while ( (pObj = LogObj.GetNextRecord()) != NULL)
{
Fehler = ExportBuffer(pObj, &TsError);
if(m_pTaskDlg->CheckCancelButton())
{
break;
}
if ( Records_Read% SetModOp == 0)
{
m_pTaskDlg->SetPos(Records_Read);
}
Records_Read++;
}
}
CLogObj.h
class CLogObj
{
public:
int LoadFile ( const string &FileName_ );
int LoadFile ( const string &FileName_, void *pProcAdr_);
private:
void* (CLogObj::*pProc)(RECORD_TYPE *pObj, bool *TsError);
vector <RECORD_TYPE*> Records;
}
CLogObj.cpp
CLogObj::CLogObj ( const string &FileName_ )
{
pProc = NULL;
LoadFile ( FileName_);
}
int CLogObj::LoadFile ( const string &FileName_, void *pProcAdr_ )
{
// FEHLER
pProc = pProcAdr_;
return ( LoadFile( FileName_) );
}
int CLogObj::LoadFile ( const string &FileName_ )
{
long loopCnt=0;
while ( (!ImpFile.eof_) && !myBreak)
{
switch(impState)
{
.
.
.
.
else
{
if (checksum == SeqBuffer[SeqTotalLen])
{
.
.
.
Fehler = DecodeBuffer(&TsError);
.
}
}
}
if(Fehler)
break;
// Close Files
ImpFile.fclose_();
return (retCode );
}
bool CLogObj::DecodeBuffer(bool *TsError)
{
RECORD_TYPE RecObj;
RECORD_TYPE *pObj;
if (pProc == NULL)
{
pObj = new(RECORD_TYPE);
}
else
{
pObj = &RecObj;
}
pObj->Type = NO_TYPE;
memcpy(pObj->RecBuf,SeqBuffer,SeqLen);
switch(SeqBuffer[0])
{
case _T('K'):
case _T('k'):
{
.
.
.
.
.
if (SeqBuffer[0] == _T('k'))
{
if ((pObj->V.Value & 0x00800000) > 0)
pObj->V.Value |= 0xFF000000;
}
else
{
if ((pObj->V.Value & 0x00100000) > 0)
pObj->V.Value |= 0xFFE00000;
}
// Timestamp holen
memcpy(&pObj->V.Ts,&SeqBuffer[6],4);
break;
}
case _T('P'): // Probe Data
{
.
.
.
.
.
} // case 'P'
case _T('O'):
{
.
.
.
.
.
break;
} // case 'P'
case _T('T'):
{ .
.
.
.
.
break;
}
case _T('S'):
{
.
.
.
.
.
if (pObj->S.Unit[0] == ' ')
{
switch (Channel)
{
.
.
.
.
.
}
}
break;
}
case _T('N'):
{
.
.
.
.
.
default :
{
}
} // switch
if (pProc == NULL)
{
if (pObj->Type == NO_TYPE)
{
delete(pObj);
}
else
{
Records.push_back(pObj);
}
}
else
{
// Export Buffer mit Pointer aufrufen;
}
return(Error);
}
} // END CLASS CLogObj
Vielen Dank im vorraus!!
Zuletzt bearbeitet: