Patch level : no patch
Files correlati : Ricompilazione Demo : [ ] Commento : eliminati url git-svn-id: svn://10.65.10.50/trunk@10886 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5c733d7be3
commit
3123452cb9
@ -1,3 +0,0 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
@ -1,3 +0,0 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
@ -1,2 +0,0 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
@ -1,3 +0,0 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
@ -1,3 +0,0 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
@ -1,71 +0,0 @@
|
||||
// mainfrm.cpp : implementation of the CMainFrame class
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sesadump.h"
|
||||
|
||||
#include "mainfrm.h"
|
||||
|
||||
#include "sesadlg.h"
|
||||
#include "sesa.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMainFrame
|
||||
|
||||
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
|
||||
|
||||
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
|
||||
//{{AFX_MSG_MAP(CMainFrame)
|
||||
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMainFrame construction/destruction
|
||||
|
||||
CMainFrame::CMainFrame()
|
||||
{
|
||||
// TODO: add member initialization code here
|
||||
}
|
||||
|
||||
CMainFrame::~CMainFrame()
|
||||
{
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMainFrame diagnostics
|
||||
|
||||
#ifdef _DEBUG
|
||||
void CMainFrame::AssertValid() const
|
||||
{
|
||||
CFrameWnd::AssertValid();
|
||||
}
|
||||
|
||||
void CMainFrame::Dump(CDumpContext& dc) const
|
||||
{
|
||||
CFrameWnd::Dump(dc);
|
||||
}
|
||||
|
||||
#endif //_DEBUG
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CMainFrame message handlers
|
||||
|
||||
void CMainFrame::OnFileOpen()
|
||||
{
|
||||
CSesaDlg dlg;
|
||||
if (dlg.DoModal() == IDOK)
|
||||
{
|
||||
BOOL ok = SESA_OpenDatabase(dlg.m_strDSN, dlg.m_strConnect);
|
||||
if (ok)
|
||||
{
|
||||
SESA_DumpTable(dlg.m_strTable);
|
||||
SESA_CloseDatabase();
|
||||
}
|
||||
}
|
||||
}
|
33
ce/mainfrm.h
33
ce/mainfrm.h
@ -1,33 +0,0 @@
|
||||
// mainfrm.h : interface of the CMainFrame class
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CMainFrame : public CFrameWnd
|
||||
{
|
||||
protected: // create from serialization only
|
||||
CMainFrame();
|
||||
DECLARE_DYNCREATE(CMainFrame)
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CMainFrame();
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CMainFrame)
|
||||
afx_msg void OnFileOpen();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@ -1,22 +0,0 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// App Studio generated include file.
|
||||
// Used by SESADUMP.RC
|
||||
//
|
||||
#define IDR_MAINFRAME 2
|
||||
#define IDD_ABOUTBOX 100
|
||||
#define IDD_CONNECTION 102
|
||||
#define IDC_DSN 1000
|
||||
#define IDC_CONNECT 1001
|
||||
#define IDC_TABLE 1002
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 32771
|
||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
667
ce/sesa.cpp
667
ce/sesa.cpp
@ -1,667 +0,0 @@
|
||||
#include "stdafx.h"
|
||||
|
||||
#include <fstream.h>
|
||||
#include <io.h>
|
||||
|
||||
#include "columnst.h"
|
||||
#include "sesa.h"
|
||||
|
||||
static CDatabase _db;
|
||||
static CString _strWorkDir;
|
||||
|
||||
#ifndef WIN32
|
||||
#define S4DLL
|
||||
#include <d4all.h>
|
||||
|
||||
static CODE4 _codebase;
|
||||
static DATA4 *_dbdata;
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// SESA field info
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class SESA_Field : public CObject
|
||||
{
|
||||
CString m_strName;
|
||||
int m_nType;
|
||||
|
||||
CString m_strValue;
|
||||
CTime m_tValue;
|
||||
double m_dValue;
|
||||
float m_fValue;
|
||||
BOOL m_bValue;
|
||||
|
||||
public:
|
||||
const CString& Name() const { return m_strName; }
|
||||
int Type() const { return m_nType; }
|
||||
|
||||
CString& StrValue() { return m_strValue; }
|
||||
CTime& TimeValue() { return m_tValue; }
|
||||
double& DoubleValue() { return m_dValue; }
|
||||
float& FloatValue() { return m_fValue; }
|
||||
BOOL& BoolValue() { return m_bValue; }
|
||||
|
||||
SESA_Field(LPCSTR strName, int nType);
|
||||
virtual ~SESA_Field() { }
|
||||
};
|
||||
|
||||
SESA_Field::SESA_Field(LPCSTR strName, int nType)
|
||||
: m_strName(strName), m_nType(nType), m_bValue(FALSE), m_dValue(0.0)
|
||||
{ }
|
||||
|
||||
class SESA_FieldList : public CObject
|
||||
{
|
||||
CObList m_List;
|
||||
|
||||
public:
|
||||
void Add(const CString& strField, int nType);
|
||||
POSITION GetHeadPosition() const;
|
||||
SESA_Field& GetNext(POSITION& rPosition);
|
||||
SESA_Field& Find(const CString& strField);
|
||||
void RemoveAll();
|
||||
|
||||
int GetCount() const { return m_List.GetCount(); }
|
||||
|
||||
virtual ~SESA_FieldList();
|
||||
};
|
||||
|
||||
void SESA_FieldList::Add(const CString& strName, int nType)
|
||||
{
|
||||
SESA_Field* pField = new SESA_Field(strName, nType);
|
||||
m_List.AddTail(pField);
|
||||
}
|
||||
|
||||
POSITION SESA_FieldList::GetHeadPosition() const
|
||||
{
|
||||
return m_List.GetHeadPosition();
|
||||
}
|
||||
|
||||
SESA_Field& SESA_FieldList::GetNext(POSITION& rPosition)
|
||||
{
|
||||
SESA_Field* pField = (SESA_Field*)m_List.GetNext(rPosition);
|
||||
ASSERT(pField);
|
||||
return *pField;
|
||||
}
|
||||
|
||||
SESA_Field& SESA_FieldList::Find(const CString& strName)
|
||||
{
|
||||
for (POSITION pos = GetHeadPosition(); pos;)
|
||||
{
|
||||
SESA_Field& fld = GetNext(pos);
|
||||
if (fld.Name() == strName)
|
||||
return fld;
|
||||
}
|
||||
return SESA_Field("", 0);
|
||||
}
|
||||
|
||||
void SESA_FieldList::RemoveAll()
|
||||
{
|
||||
while (!m_List.IsEmpty())
|
||||
{
|
||||
CObject* pField = m_List.RemoveHead();
|
||||
delete pField;
|
||||
}
|
||||
}
|
||||
|
||||
SESA_FieldList::~SESA_FieldList()
|
||||
{
|
||||
RemoveAll();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Sesa recordset
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class SESA_Recordset : public CRecordset
|
||||
{
|
||||
// DECLARE_DYNAMIC(SESA_Recordset)
|
||||
SESA_FieldList m_FieldList;
|
||||
CStringList m_DumpList;
|
||||
|
||||
protected:
|
||||
virtual CString GetDefaultConnect();
|
||||
virtual CString GetDefaultSQL();
|
||||
virtual void DoFieldExchange(CFieldExchange* pFX);
|
||||
|
||||
public:
|
||||
BOOL Open(LPCSTR strTable);
|
||||
|
||||
void DumpHeader(ostream& out);
|
||||
void ReadDumpList(const CString& strFile);
|
||||
void DumpFields(ostream& out);
|
||||
|
||||
SESA_Recordset(CDatabase* pDatabase);
|
||||
virtual ~SESA_Recordset() { }
|
||||
};
|
||||
|
||||
//IMPLEMENT_DYNAMIC(SESA_Recordset, CRecordset)
|
||||
|
||||
CString SESA_Recordset::GetDefaultConnect()
|
||||
{
|
||||
return "ODBC;"; // Copied from CATALOG sample application
|
||||
}
|
||||
|
||||
CString SESA_Recordset::GetDefaultSQL()
|
||||
{
|
||||
ASSERT(FALSE); // Copied from CATALOG sample application
|
||||
return "!";
|
||||
}
|
||||
|
||||
BOOL SESA_Recordset::Open(LPCSTR strTable)
|
||||
{
|
||||
CColumns Cols(&_db);
|
||||
Cols.m_strTableNameParam = strTable;
|
||||
BOOL ok = Cols.Open(CRecordset::forwardOnly, NULL, CRecordset::readOnly);
|
||||
if (ok)
|
||||
{
|
||||
while (!Cols.IsEOF())
|
||||
{
|
||||
m_FieldList.Add(Cols.m_strColumnName, Cols.m_nDataType);
|
||||
Cols.MoveNext();
|
||||
}
|
||||
RETCODE nRetCode;
|
||||
AFX_SQL_SYNC(::SQLFreeStmt(Cols.m_hstmt, SQL_CLOSE));
|
||||
|
||||
m_nFields = m_FieldList.GetCount();
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
ok = CRecordset::Open(CRecordset::forwardOnly, strTable, CRecordset::readOnly);
|
||||
if (!ok)
|
||||
{
|
||||
CString msg;
|
||||
msg = "Impossibile aprire la tabella ";
|
||||
msg += strTable;
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
void SESA_Recordset::DoFieldExchange(CFieldExchange* pFX)
|
||||
{
|
||||
pFX->SetFieldType(CFieldExchange::outputColumn);
|
||||
BOOL bLoad= pFX->m_nOperation == CFieldExchange::Fixup;
|
||||
|
||||
int nField = 1;
|
||||
for (POSITION pos = m_FieldList.GetHeadPosition(); pos; nField++)
|
||||
{
|
||||
SESA_Field& fld = m_FieldList.GetNext(pos);
|
||||
CString& val = fld.StrValue();
|
||||
switch(fld.Type())
|
||||
{
|
||||
case SQL_BIT:
|
||||
{
|
||||
BOOL& b = fld.BoolValue();
|
||||
RFX_Bool(pFX, fld.Name(), b);
|
||||
if (bLoad)
|
||||
{
|
||||
if (b == FALSE ||
|
||||
#ifdef WIN32
|
||||
IsFieldNull(&b))
|
||||
#else
|
||||
IsFieldFlagNull(nField, CFieldExchange::outputColumn))
|
||||
#endif
|
||||
val.Empty();
|
||||
else
|
||||
val = "X";
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SQL_CHAR:
|
||||
case SQL_NUMERIC:
|
||||
RFX_Text(pFX, fld.Name(), val);
|
||||
break;
|
||||
case SQL_DATE:
|
||||
{
|
||||
CTime& t = fld.TimeValue();
|
||||
RFX_Date(pFX, fld.Name(), t);
|
||||
if (bLoad)
|
||||
{
|
||||
TIMESTAMP_STRUCT* pts = (TIMESTAMP_STRUCT*)m_pvFieldProxy[nField];
|
||||
if (pts->year == 0)
|
||||
val.Empty();
|
||||
else
|
||||
{
|
||||
char* buf = val.GetBuffer(16);
|
||||
sprintf(buf, "%02d-%02d-%04d", pts->day, pts->month, pts->year);
|
||||
val.ReleaseBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SQL_REAL:
|
||||
{
|
||||
float& d = fld.FloatValue();
|
||||
RFX_Single(pFX, fld.Name(), d);
|
||||
if (bLoad)
|
||||
{
|
||||
if (d == 0.0 ||
|
||||
#ifdef WIN32
|
||||
IsFieldNull(&d))
|
||||
#else
|
||||
IsFieldFlagNull(nField, CFieldExchange::outputColumn))
|
||||
#endif
|
||||
{
|
||||
val.Empty();
|
||||
}
|
||||
else
|
||||
{
|
||||
char* buf = val.GetBuffer(32);
|
||||
sprintf(buf, "%.12g", d);
|
||||
val.ReleaseBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SQL_FLOAT:
|
||||
case SQL_DOUBLE:
|
||||
{
|
||||
double& d = fld.DoubleValue();
|
||||
RFX_Double(pFX, fld.Name(), d);
|
||||
if (bLoad)
|
||||
{
|
||||
if (d == 0.0 ||
|
||||
#ifdef WIN32
|
||||
IsFieldNull(&d))
|
||||
#else
|
||||
IsFieldFlagNull(nField, CFieldExchange::outputColumn))
|
||||
#endif
|
||||
{
|
||||
val.Empty();
|
||||
}
|
||||
else
|
||||
{
|
||||
char* buf = val.GetBuffer(32);
|
||||
sprintf(buf, "%.12lg", d);
|
||||
val.ReleaseBuffer();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SESA_Recordset::DumpHeader(ostream& out)
|
||||
{
|
||||
out << "[MAIN]" << endl
|
||||
<< "TYPEFIELD=-1" << endl
|
||||
<< "DECSEP=." << endl
|
||||
<< "FIELDSEP=|" << endl
|
||||
<< endl;
|
||||
|
||||
out << "[RECORD]" << endl;
|
||||
int num = 0;
|
||||
for (POSITION pos = m_FieldList.GetHeadPosition(); pos; num++)
|
||||
{
|
||||
const SESA_Field& fld = m_FieldList.GetNext(pos);
|
||||
out << "NAME(" << num << ") = " << fld.Name() << endl
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
void SESA_Recordset::ReadDumpList(const CString& strFile)
|
||||
{
|
||||
char szField[16];
|
||||
char szName[16];
|
||||
char szFile[32];
|
||||
|
||||
// Mette .\ davanti al nome per cercare nella directory corrente,
|
||||
// altrimenti lo cerca nella directory di Windows
|
||||
sprintf(szFile, ".\\%s", strFile);
|
||||
|
||||
for (int num = 0; ; num++)
|
||||
{
|
||||
sprintf(szField, "NAME(%d)", num);
|
||||
GetPrivateProfileString("RECORD", szField, "", szName, sizeof(szName), szFile);
|
||||
if (*szName)
|
||||
m_DumpList.AddTail(szName);
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SESA_Recordset::DumpFields(ostream& out)
|
||||
{
|
||||
if (m_DumpList.IsEmpty())
|
||||
{
|
||||
int num = 0;
|
||||
for (POSITION pos = m_FieldList.GetHeadPosition(); pos; num++)
|
||||
{
|
||||
SESA_Field& fld = m_FieldList.GetNext(pos);
|
||||
if (num) out << '|';
|
||||
out << fld.StrValue();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int num = 0;
|
||||
for (POSITION npos = m_DumpList.GetHeadPosition(); npos; num++)
|
||||
{
|
||||
CString& strName = m_DumpList.GetNext(npos);
|
||||
SESA_Field& fld = m_FieldList.Find(strName);
|
||||
if (num) out << '|';
|
||||
out << fld.StrValue();
|
||||
}
|
||||
}
|
||||
|
||||
out << endl;
|
||||
}
|
||||
|
||||
|
||||
SESA_Recordset::SESA_Recordset(CDatabase* pDatabase)
|
||||
: CRecordset(pDatabase)
|
||||
{ }
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// SESA functions
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
inline BOOL is_space(char c) { return c >= '\t' && c <= ' '; }
|
||||
|
||||
static BOOL UpdateODBCIni(LPCSTR szEntry, LPCSTR szDefault, BOOL bForce = FALSE)
|
||||
{
|
||||
BOOL bWrite = bForce;
|
||||
|
||||
if (!bForce)
|
||||
{
|
||||
char szBuffer[80];
|
||||
::GetPrivateProfileString("SIGLAPP", szEntry, "", szBuffer, sizeof(szBuffer), "odbc.ini");
|
||||
bWrite = *szBuffer == '\0';
|
||||
}
|
||||
|
||||
if (bWrite)
|
||||
::WritePrivateProfileString("SIGLAPP", szEntry, szDefault, "odbc.ini");
|
||||
|
||||
return bWrite;
|
||||
}
|
||||
|
||||
BOOL SESA_OpenDatabase(const char* lpszDSN, const char* lpszConnect)
|
||||
{
|
||||
if (lpszDSN == NULL || *lpszDSN == '\0')
|
||||
lpszDSN = "SIGLAPP";
|
||||
if (lpszConnect == NULL || *lpszConnect == '\0')
|
||||
lpszConnect = "ODBC;"; //UID=sa;PWD=";
|
||||
|
||||
BOOL ok;
|
||||
TRY
|
||||
{
|
||||
// DataSrc Excl ReadOnly ConnectString
|
||||
ok = _db.Open(lpszDSN, FALSE, TRUE, lpszConnect);
|
||||
if (ok)
|
||||
_db.m_bStripTrailingSpaces = TRUE;
|
||||
}
|
||||
CATCH_ALL(e)
|
||||
{
|
||||
ok = FALSE;
|
||||
}
|
||||
END_CATCH_ALL
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
CString msg;
|
||||
msg = "Impossibile connettersi al database ";
|
||||
msg += lpszDSN;
|
||||
msg += " usando ";
|
||||
msg += lpszConnect;
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
BOOL SESA_CloseDatabase()
|
||||
{
|
||||
if (_db.IsOpen())
|
||||
_db.Close();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SESA_DumpTableODBC(const char* lpszTableName)
|
||||
{
|
||||
const BOOL bWasOpen = _db.IsOpen();
|
||||
if (!bWasOpen)
|
||||
{
|
||||
BOOL bOk = SESA_OpenDatabase();
|
||||
if (!bOk)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SESA_Recordset rs(&_db);
|
||||
BOOL ok = rs.Open(lpszTableName);
|
||||
if (ok)
|
||||
{
|
||||
CString strName = _strWorkDir;
|
||||
strName += lpszTableName;
|
||||
strName += ".ini";
|
||||
|
||||
if (access(strName, 0x00) == 0)
|
||||
{
|
||||
rs.ReadDumpList(strName);
|
||||
}
|
||||
else
|
||||
{
|
||||
ofstream out(strName);
|
||||
rs.DumpHeader(out);
|
||||
}
|
||||
|
||||
strName = _strWorkDir;
|
||||
strName += lpszTableName;
|
||||
strName += ".txt";
|
||||
ofstream out(strName);
|
||||
while (!rs.IsEOF())
|
||||
{
|
||||
rs.DumpFields(out);
|
||||
rs.MoveNext();
|
||||
}
|
||||
|
||||
RETCODE nRetCode;
|
||||
AFX_SQL_SYNC(::SQLFreeStmt(rs.m_hstmt, SQL_CLOSE));
|
||||
}
|
||||
else
|
||||
{
|
||||
CString msg;
|
||||
msg = "Impossibile aprire la tabella ";
|
||||
msg += lpszTableName;
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
if (!bWasOpen)
|
||||
SESA_CloseDatabase();
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
BOOL SESA_DumpTableCODEBASE(const char* SIGLAPP, const char* lpszTableName)
|
||||
{
|
||||
BOOL ok = TRUE;
|
||||
#ifndef WIN32
|
||||
CString filename;
|
||||
CString msg;
|
||||
|
||||
d4init(&_codebase);
|
||||
_dbdata = NULL;
|
||||
_codebase.read_lock=0;
|
||||
_codebase.default_unique_error=e4unique;
|
||||
_codebase.safety=0;
|
||||
_codebase.lock_attempts=1;
|
||||
u4ncpy(_codebase.date_format,"CCYYMMDD",sizeof(_codebase.date_format));
|
||||
|
||||
filename = SIGLAPP;
|
||||
if (filename.Right(1) != "\\" && filename.Right(1) != "/")
|
||||
filename += "\\";
|
||||
filename += lpszTableName;
|
||||
_codebase.error_code=0;
|
||||
_dbdata=d4open(&_codebase,(char*)(const char*)filename);
|
||||
if (_dbdata != NULL)
|
||||
{
|
||||
CString strName = _strWorkDir;
|
||||
CString fld_name,fld_val;
|
||||
CStringArray field_list;
|
||||
strName += lpszTableName;
|
||||
strName += ".ini";
|
||||
|
||||
if (access(strName, 0x00) == 0)
|
||||
{
|
||||
// Legge la lista dei campi dal .ini se esiste gia'
|
||||
|
||||
char szField[16];
|
||||
char szName[16];
|
||||
char szFile[32];
|
||||
|
||||
// Mette .\ davanti al nome per cercare nella directory corrente,
|
||||
// altrimenti lo cerca nella directory di Windows
|
||||
sprintf(szFile, ".\\%s", strName);
|
||||
|
||||
for (int num = 0; ; num++)
|
||||
{
|
||||
sprintf(szField, "NAME(%d)", num);
|
||||
GetPrivateProfileString("RECORD", szField, "", szName, sizeof(szName), szFile);
|
||||
if (*szName)
|
||||
field_list.Add(szName);
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Scarica il tracciato dei campi
|
||||
ofstream out(strName);
|
||||
out << "[MAIN]" << endl
|
||||
<< "TYPEFIELD=-1" << endl
|
||||
<< "DECSEP=." << endl
|
||||
<< "FIELDSEP=|" << endl
|
||||
<< endl;
|
||||
|
||||
out << "[RECORD]" << endl;
|
||||
FIELD4INFO *field_info = d4field_info(_dbdata);
|
||||
if (field_info != NULL)
|
||||
{
|
||||
const int num_fields = d4num_fields(_dbdata);
|
||||
for (int num=0; num < num_fields; num++)
|
||||
{
|
||||
out << "NAME(" << num << ") = " << field_info[num].name << endl
|
||||
<< endl;
|
||||
field_list.Add(field_info[num].name);
|
||||
}
|
||||
u4free(field_info);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = "Impossibile reperire informazioni sulla testata del file";
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
ok = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (ok)
|
||||
{
|
||||
strName = _strWorkDir;
|
||||
strName += lpszTableName;
|
||||
strName += ".txt";
|
||||
ofstream out(strName);
|
||||
d4top(_dbdata); // No tag is required
|
||||
while (!d4eof(_dbdata) && ok)
|
||||
{
|
||||
if (!d4deleted(_dbdata)) // Dump only undeleted records
|
||||
{
|
||||
const int items = field_list.GetSize();
|
||||
for (int num = 0; num < items && ok; num++)
|
||||
{
|
||||
fld_name = field_list.GetAt(num);
|
||||
if (num)
|
||||
out << '|';
|
||||
FIELD4* fldfld = d4field(_dbdata,(char*)(const char*)fld_name);
|
||||
if (fldfld != NULL)
|
||||
{
|
||||
fld_val = f4str(fldfld);
|
||||
char * v = fld_val.GetBuffer(80);
|
||||
// Trims leading & trailing spaces
|
||||
{
|
||||
char* last = v;
|
||||
|
||||
// Salta spazi iniziali
|
||||
for (const char* s = v; *s && is_space(*s); s++);
|
||||
|
||||
// Copia stringa
|
||||
for(char* c = v; *s; s++)
|
||||
{
|
||||
*c++ = *s;
|
||||
if (!is_space(*s)) last = c;
|
||||
}
|
||||
// Elimina spazi finali
|
||||
*last = '\0';
|
||||
}
|
||||
out << v;
|
||||
fld_val.ReleaseBuffer();
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = "Impossibile reperire il campo ";
|
||||
msg += fld_val;
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
ok = FALSE;
|
||||
}
|
||||
}
|
||||
out << endl;
|
||||
}
|
||||
d4skip(_dbdata,1L); // Skip next
|
||||
}
|
||||
}
|
||||
|
||||
d4close(_dbdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg = "Impossibile aprire il file ";
|
||||
msg += filename;
|
||||
AfxMessageBox(msg, MB_OK | MB_ICONEXCLAMATION);
|
||||
ok = FALSE;
|
||||
}
|
||||
|
||||
d4init_undo(&_codebase);
|
||||
|
||||
#endif
|
||||
return ok;
|
||||
}
|
||||
|
||||
BOOL SESA_DumpTable(const char* lpszTableName)
|
||||
{
|
||||
char szBuffer[80];
|
||||
::GetPrivateProfileString("SIGLAPP",
|
||||
#ifndef WIN32
|
||||
"Driver",
|
||||
#else
|
||||
"Driver32",
|
||||
#endif
|
||||
"", szBuffer, sizeof(szBuffer), "odbc.ini");
|
||||
|
||||
if (*szBuffer == '\0' || !SESA_DumpTableODBC(lpszTableName))
|
||||
{
|
||||
const char *SIGLAPP = getenv("SPPROOT");
|
||||
if (SIGLAPP)
|
||||
return SESA_DumpTableCODEBASE(SIGLAPP, lpszTableName);
|
||||
else
|
||||
{
|
||||
AfxMessageBox("Impossibile trovare la variabile d'ambiente SPPROOT", MB_OK | MB_ICONEXCLAMATION);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL SESA_WorkDir(const char* strDir)
|
||||
{
|
||||
_strWorkDir = strDir;
|
||||
_strWorkDir = _strWorkDir.SpanExcluding(" ");
|
||||
const char& last = _strWorkDir[_strWorkDir.GetLength()-1];
|
||||
if (last != '\\' && last != '/')
|
||||
_strWorkDir += "\\";
|
||||
return !_strWorkDir.IsEmpty();
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
BOOL SESA_WorkDir(const char* strDir);
|
||||
BOOL SESA_OpenDatabase(const char* strDSN = NULL, const char* strConnect = NULL);
|
||||
BOOL SESA_DumpTable(const char* strTableName);
|
||||
BOOL SESA_DumpTableODBC(const char* strTableName);
|
||||
BOOL SESA_DumpTableCODEBASE(const char* SIGLAPP, const char* strTableName);
|
||||
BOOL SESA_CloseDatabase();
|
@ -1,80 +0,0 @@
|
||||
// sesaddoc.cpp : implementation of the CSesadumpDoc class
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sesadump.h"
|
||||
|
||||
#include "sesaddoc.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpDoc
|
||||
|
||||
IMPLEMENT_DYNCREATE(CSesadumpDoc, CDocument)
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSesadumpDoc, CDocument)
|
||||
//{{AFX_MSG_MAP(CSesadumpDoc)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpDoc construction/destruction
|
||||
|
||||
CSesadumpDoc::CSesadumpDoc()
|
||||
{
|
||||
// TODO: add one-time construction code here
|
||||
}
|
||||
|
||||
CSesadumpDoc::~CSesadumpDoc()
|
||||
{
|
||||
}
|
||||
|
||||
BOOL CSesadumpDoc::OnNewDocument()
|
||||
{
|
||||
if (!CDocument::OnNewDocument())
|
||||
return FALSE;
|
||||
|
||||
// TODO: add reinitialization code here
|
||||
// (SDI documents will reuse this document)
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpDoc serialization
|
||||
|
||||
void CSesadumpDoc::Serialize(CArchive& ar)
|
||||
{
|
||||
if (ar.IsStoring())
|
||||
{
|
||||
// TODO: add storing code here
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: add loading code here
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpDoc diagnostics
|
||||
|
||||
#ifdef _DEBUG
|
||||
void CSesadumpDoc::AssertValid() const
|
||||
{
|
||||
CDocument::AssertValid();
|
||||
}
|
||||
|
||||
void CSesadumpDoc::Dump(CDumpContext& dc) const
|
||||
{
|
||||
// CDocument::Dump(dc);
|
||||
}
|
||||
#endif //_DEBUG
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpDoc commands
|
@ -1,37 +0,0 @@
|
||||
// sesaddoc.h : interface of the CSesadumpDoc class
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CSesadumpDoc : public CDocument
|
||||
{
|
||||
protected: // create from serialization only
|
||||
CSesadumpDoc();
|
||||
DECLARE_DYNCREATE(CSesadumpDoc)
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CSesadumpDoc();
|
||||
virtual void Serialize(CArchive& ar); // overridden for document i/o
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
virtual BOOL OnNewDocument();
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CSesadumpDoc)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@ -1,48 +0,0 @@
|
||||
// sesadlg.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include <direct.h>
|
||||
|
||||
#include "sesadump.h"
|
||||
#include "sesadlg.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesaDlg dialog
|
||||
|
||||
|
||||
CSesaDlg::CSesaDlg(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(CSesaDlg::IDD, pParent)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CSesaDlg)
|
||||
m_strDSN = "SIGLAPP";
|
||||
m_strConnect = "ODBC;";
|
||||
m_strTable = "";
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
void CSesaDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CSesaDlg)
|
||||
DDX_Text(pDX, IDC_DSN, m_strDSN);
|
||||
DDX_Text(pDX, IDC_CONNECT, m_strConnect);
|
||||
DDX_Text(pDX, IDC_TABLE, m_strTable);
|
||||
DDV_MaxChars(pDX, m_strTable, 12);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSesaDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CSesaDlg)
|
||||
// NOTE: the ClassWizard will add message map macros here
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesaDlg message handlers
|
30
ce/sesadlg.h
30
ce/sesadlg.h
@ -1,30 +0,0 @@
|
||||
// sesadlg.h : header file
|
||||
//
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesaDlg dialog
|
||||
|
||||
class CSesaDlg : public CDialog
|
||||
{
|
||||
// Construction
|
||||
public:
|
||||
CSesaDlg(CWnd* pParent = NULL); // standard constructor
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CSesaDlg)
|
||||
enum { IDD = IDD_CONNECTION };
|
||||
CString m_strDSN;
|
||||
CString m_strConnect;
|
||||
CString m_strTable;
|
||||
//}}AFX_DATA
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CSesaDlg)
|
||||
// NOTE: the ClassWizard will add member functions here
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
151
ce/sesadump.cpp
151
ce/sesadump.cpp
@ -1,151 +0,0 @@
|
||||
// sesadump.cpp : Defines the class behaviors for the application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sesadump.h"
|
||||
|
||||
#include "mainfrm.h"
|
||||
#include "sesaddoc.h"
|
||||
#include "sesadvw.h"
|
||||
#include "sesa.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpApp
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSesadumpApp, CWinApp)
|
||||
//{{AFX_MSG_MAP(CSesadumpApp)
|
||||
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG_MAP
|
||||
// Standard file based document commands
|
||||
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
|
||||
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpApp construction
|
||||
|
||||
CSesadumpApp::CSesadumpApp()
|
||||
{
|
||||
// TODO: add construction code here,
|
||||
// Place all significant initialization in InitInstance
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// The one and only CSesadumpApp object
|
||||
|
||||
CSesadumpApp NEAR theApp;
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpApp initialization
|
||||
|
||||
BOOL CSesadumpApp::InitInstance()
|
||||
{
|
||||
// Standard initialization
|
||||
// If you are not using these features and wish to reduce the size
|
||||
// of your final executable, you should remove from the following
|
||||
// the specific initialization routines you do not need.
|
||||
|
||||
SetDialogBkColor(); // Set dialog background color to gray
|
||||
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
|
||||
|
||||
// Register the application's document templates. Document templates
|
||||
// serve as the connection between documents, frame windows and views.
|
||||
|
||||
CSingleDocTemplate* pDocTemplate;
|
||||
pDocTemplate = new CSingleDocTemplate(
|
||||
IDR_MAINFRAME,
|
||||
RUNTIME_CLASS(CSesadumpDoc),
|
||||
RUNTIME_CLASS(CMainFrame), // main SDI frame window
|
||||
RUNTIME_CLASS(CSesadumpView));
|
||||
AddDocTemplate(pDocTemplate);
|
||||
|
||||
OnFileNew();
|
||||
|
||||
if (m_lpCmdLine[0] != '\0')
|
||||
{
|
||||
CString strTable, strDir;
|
||||
char* space = strchr(m_lpCmdLine, ' ');
|
||||
if (space)
|
||||
{
|
||||
*space = '\0';
|
||||
strTable = m_lpCmdLine;
|
||||
strDir = space+1;
|
||||
*space = ' ';
|
||||
}
|
||||
else
|
||||
{
|
||||
strTable = m_lpCmdLine;
|
||||
}
|
||||
|
||||
SESA_WorkDir(strDir);
|
||||
SESA_DumpTable(strTable);
|
||||
|
||||
#ifndef WIN32
|
||||
const UINT WM_WAKEUP = RegisterWindowMessage("WAKEUP");
|
||||
const HTASK ht = GetCurrentTask();
|
||||
PostMessage(HWND_BROADCAST, WM_WAKEUP, (WPARAM)ht, 0L);
|
||||
#endif
|
||||
|
||||
return FALSE; // Batch mode
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CAboutDlg dialog used for App About
|
||||
|
||||
class CAboutDlg : public CDialog
|
||||
{
|
||||
public:
|
||||
CAboutDlg();
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CAboutDlg)
|
||||
enum { IDD = IDD_ABOUTBOX };
|
||||
//}}AFX_DATA
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
//{{AFX_MSG(CAboutDlg)
|
||||
// No message handlers
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CAboutDlg)
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CAboutDlg)
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
|
||||
//{{AFX_MSG_MAP(CAboutDlg)
|
||||
// No message handlers
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
// App command to run the dialog
|
||||
void CSesadumpApp::OnAppAbout()
|
||||
{
|
||||
CAboutDlg aboutDlg;
|
||||
aboutDlg.DoModal();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpApp commands
|
474
ce/sesadump.def
474
ce/sesadump.def
@ -1,474 +0,0 @@
|
||||
; sesadump.def : Declares the module parameters for the application.
|
||||
|
||||
NAME SESADUMP
|
||||
DESCRIPTION 'SESADUMP Windows Application'
|
||||
EXETYPE WINDOWS
|
||||
|
||||
CODE PRELOAD MOVEABLE DISCARDABLE
|
||||
DATA PRELOAD MOVEABLE MULTIPLE
|
||||
|
||||
HEAPSIZE 1024 ; initial heap size
|
||||
; Stack size is passed as argument to linker's /STACK option
|
||||
|
||||
|
||||
IMPORTS
|
||||
C4ATOD = CB5.1
|
||||
C4ATOI = CB5.2
|
||||
C4ATOL = CB5.3
|
||||
C4DESCEND = CB5.4
|
||||
C4DESCEND_DATE = CB5.5
|
||||
C4DESCEND_NUM = CB5.6
|
||||
C4DESCEND_STR = CB5.7
|
||||
C4ENCODE = CB5.8
|
||||
CODE4ALLOC = CB5.9
|
||||
|
||||
D4ALIAS = CB5.10
|
||||
D4ALIAS_SET = CB5.11
|
||||
D4APPEND = CB5.12
|
||||
D4APPEND_BLANK = CB5.13
|
||||
D4APPEND_DATA = CB5.14
|
||||
D4APPEND_START = CB5.15
|
||||
D4BLANK = CB5.16
|
||||
D4BOF = CB5.17
|
||||
D4BOTTOM = CB5.18
|
||||
D4CHANGED = CB5.19
|
||||
D4CHECK = CB5.20
|
||||
D4CLOSE = CB5.21
|
||||
D4CLOSE_ALL = CB5.22
|
||||
D4CREATE = CB5.23
|
||||
D4DATA = CB5.24
|
||||
D4DELETE = CB5.25
|
||||
D4DELETED = CB5.26
|
||||
D4EOF = CB5.27
|
||||
D4FIELD = CB5.28
|
||||
D4FIELD_INFO = CB5.29
|
||||
D4FIELD_J = CB5.30
|
||||
D4FIELD_NUMBER = CB5.31
|
||||
D4FLUSH = CB5.32
|
||||
D4FLUSH_DATA = CB5.33
|
||||
D4FLUSH_FILES = CB5.34
|
||||
D4FREE_BLOCKS = CB5.35
|
||||
D4GO = CB5.36
|
||||
D4GO_DATA = CB5.37
|
||||
D4GO_EOF = CB5.38
|
||||
D4INDEX = CB5.39
|
||||
D4INIT = CB5.40
|
||||
D4INIT_UNDO = CB5.41
|
||||
D4LOCK = CB5.42
|
||||
D4LOCK_ALL = CB5.43
|
||||
D4LOCK_APPEND = CB5.44
|
||||
D4LOCK_FILE = CB5.45
|
||||
D4LOCK_GROUP = CB5.46
|
||||
D4LOCK_INDEX = CB5.47
|
||||
D4LOCK_TEST = CB5.48
|
||||
D4LOCK_TEST_APPEND = CB5.49
|
||||
D4LOCK_TEST_FILE = CB5.50
|
||||
D4LOCK_TEST_INDEX = CB5.51
|
||||
D4MEMO_COMPRESS = CB5.52
|
||||
D4NUM_FIELDS = CB5.53
|
||||
D4OPEN = CB5.54
|
||||
D4OPT_START = CB5.55
|
||||
D4OPT_SUSPEND = CB5.56
|
||||
D4OPTIMIZE = CB5.57
|
||||
D4OPTIMIZE_WRITE = CB5.58
|
||||
D4PACK = CB5.59
|
||||
D4PACK_DATA = CB5.60
|
||||
D4POSITION = CB5.61
|
||||
D4POSITION_SET = CB5.62
|
||||
D4READ = CB5.63
|
||||
D4READ_OLD = CB5.64
|
||||
D4RECALL = CB5.65
|
||||
D4RECCOUNT = CB5.66
|
||||
D4RECNO = CB5.67
|
||||
D4RECORD = CB5.68
|
||||
D4RECORD_POSITION = CB5.69
|
||||
D4RECORD_WIDTH = CB5.70
|
||||
D4REFRESH = CB5.71
|
||||
D4REFRESH_RECORD = CB5.72
|
||||
D4REINDEX = CB5.73
|
||||
D4SEEK = CB5.74
|
||||
D4SEEK_DOUBLE = CB5.75
|
||||
D4SKIP = CB5.76
|
||||
D4TAG = CB5.77
|
||||
D4TAG_DEFAULT = CB5.78
|
||||
D4TAG_NEXT = CB5.79
|
||||
D4TAG_PREV = CB5.80
|
||||
D4TAG_SELECT = CB5.81
|
||||
D4TAG_SELECTED = CB5.82
|
||||
D4TOP = CB5.83
|
||||
D4UNLOCK = CB5.84
|
||||
D4UNLOCK_FILES = CB5.85
|
||||
D4VALIDATE_MEMO_IDS = CB5.86
|
||||
D4WRITE = CB5.87
|
||||
D4WRITE_DATA = CB5.88
|
||||
D4WRITE_KEYS = CB5.89
|
||||
D4ZAP = CB5.90
|
||||
D4ZAP_DATA = CB5.91
|
||||
|
||||
DATE4ASSIGN = CB5.92
|
||||
DATE4CDOW = CB5.93
|
||||
DATE4CMONTH = CB5.94
|
||||
DATE4DAY = CB5.95
|
||||
DATE4DOW = CB5.96
|
||||
DATE4FORMAT = CB5.97
|
||||
DATE4FORMAT_MDX = CB5.98
|
||||
DATE4INIT = CB5.99
|
||||
DATE4LONG = CB5.100
|
||||
DATE4MONTH = CB5.101
|
||||
DATE4TIME_NOW = CB5.102
|
||||
DATE4TODAY = CB5.103
|
||||
DATE4YEAR = CB5.104
|
||||
|
||||
E4 = CB5.105
|
||||
E4CODE = CB5.106
|
||||
E4DESCRIBE = CB5.107
|
||||
E4EXIT = CB5.108
|
||||
E4EXIT_TEST = CB5.109
|
||||
E4HOOK = CB5.110
|
||||
E4SET = CB5.111
|
||||
E4SEVERE = CB5.112
|
||||
E4TEXT = CB5.113
|
||||
|
||||
EXPR4CALC_CREATE = CB5.114
|
||||
EXPR4DOUBLE = CB5.115
|
||||
EXPR4FREE = CB5.116
|
||||
EXPR4KEY = CB5.117
|
||||
EXPR4KEY_LEN = CB5.118
|
||||
EXPR4LEN = CB5.119
|
||||
EXPR4PARSE = CB5.120
|
||||
EXPR4SOURCE = CB5.121
|
||||
EXPR4TRUE = CB5.122
|
||||
EXPR4TYPE = CB5.123
|
||||
EXPR4VARY = CB5.124
|
||||
|
||||
F4ASSIGN = CB5.125
|
||||
F4ASSIGN_CHAR = CB5.126
|
||||
F4ASSIGN_DOUBLE = CB5.127
|
||||
F4ASSIGN_FIELD = CB5.128
|
||||
F4ASSIGN_INT = CB5.129
|
||||
F4ASSIGN_LONG = CB5.130
|
||||
F4ASSIGN_N = CB5.131
|
||||
F4ASSIGN_PTR = CB5.132
|
||||
F4BLANK = CB5.133
|
||||
F4CHAR = CB5.134
|
||||
F4DATA = CB5.135
|
||||
F4DECIMALS = CB5.136
|
||||
F4DOUBLE = CB5.137
|
||||
F4INT = CB5.138
|
||||
F4LEN = CB5.139
|
||||
F4LONG = CB5.140
|
||||
F4MEMO_ASSIGN = CB5.150
|
||||
F4MEMO_ASSIGN_N = CB5.151
|
||||
F4MEMO_FREE = CB5.152
|
||||
F4MEMO_LEN = CB5.153
|
||||
F4MEMO_NCPY = CB5.154
|
||||
F4MEMO_PTR = CB5.155
|
||||
F4MEMO_STR = CB5.156
|
||||
F4NAME = CB5.157
|
||||
F4NCPY = CB5.158
|
||||
F4PTR = CB5.159
|
||||
F4STR = CB5.160
|
||||
F4TRUE = CB5.161
|
||||
F4TYPE = CB5.162
|
||||
|
||||
FILE4CLOSE = CB5.163
|
||||
FILE4CREATE = CB5.164
|
||||
FILE4FLUSH = CB5.165
|
||||
FILE4LEN = CB5.166
|
||||
FILE4LEN_SET = CB5.167
|
||||
FILE4LOCK = CB5.168
|
||||
FILE4LOCK_HOOK = CB5.169
|
||||
FILE4OPEN = CB5.170
|
||||
FILE4OPTIMIZE = CB5.171
|
||||
FILE4OPTIMIZE_WRITE = CB5.172
|
||||
FILE4READ = CB5.173
|
||||
FILE4READ_ALL = CB5.174
|
||||
FILE4READ_ERROR = CB5.175
|
||||
FILE4REFRESH = CB5.176
|
||||
FILE4REPLACE = CB5.177
|
||||
FILE4TEMP = CB5.178
|
||||
FILE4UNLOCK = CB5.179
|
||||
FILE4WRITE = CB5.180
|
||||
FILE4SEQ_READ = CB5.181
|
||||
FILE4SEQ_READ_ALL = CB5.182
|
||||
FILE4SEQ_READ_INIT = CB5.183
|
||||
FILE4SEQ_WRITE = CB5.184
|
||||
FILE4SEQ_WRITE_FLUSH = CB5.185
|
||||
FILE4SEQ_WRITE_INIT = CB5.186
|
||||
FILE4SEQ_WRITE_REPEAT = CB5.187
|
||||
|
||||
I4CLOSE = CB5.188
|
||||
I4CREATE = CB5.189
|
||||
I4LOCK = CB5.190
|
||||
I4OPEN = CB5.191
|
||||
I4REINDEX = CB5.192
|
||||
I4TAG = CB5.193
|
||||
I4TAG_INFO = CB5.194
|
||||
I4UNLOCK = CB5.195
|
||||
|
||||
L4ADD = CB5.196
|
||||
L4ADD_AFTER = CB5.197
|
||||
L4ADD_BEFORE = CB5.198
|
||||
L4FIRST = CB5.199
|
||||
L4LAST = CB5.200
|
||||
L4NEXT = CB5.201
|
||||
L4POP = CB5.202
|
||||
L4PREV = CB5.203
|
||||
L4REMOVE = CB5.204
|
||||
|
||||
MEM4ALLOC = CB5.205
|
||||
MEM4CREATE = CB5.206
|
||||
MEM4FREE = CB5.207
|
||||
MEM4RELEASE = CB5.208
|
||||
MEM4RESET = CB5.209
|
||||
|
||||
RELATE4BOTTOM = CB5.210
|
||||
RELATE4CHANGED = CB5.211
|
||||
RELATE4CREATE_SLAVE = CB5.212
|
||||
RELATE4DO = CB5.213
|
||||
RELATE4DO_ONE = CB5.214
|
||||
RELATE4ERROR_ACTION = CB5.215
|
||||
RELATE4FREE = CB5.216
|
||||
RELATE4INIT = CB5.217
|
||||
RELATE4LOCK = CB5.218
|
||||
RELATE4MATCH_LEN = CB5.219
|
||||
RELATE4NEXT = CB5.220
|
||||
RELATE4QUERY_SET = CB5.221
|
||||
RELATE4SKIP = CB5.222
|
||||
RELATE4SKIP_ENABLE = CB5.223
|
||||
RELATE4SORT_SET = CB5.224
|
||||
RELATE4TOP = CB5.225
|
||||
RELATE4TYPE = CB5.226
|
||||
RELATE4UNLOCK = CB5.227
|
||||
|
||||
SORT4FREE = CB5.229
|
||||
SORT4GET = CB5.230
|
||||
SORT4GET_INIT = CB5.231
|
||||
SORT4INIT = CB5.232
|
||||
SORT4PUT = CB5.233
|
||||
|
||||
T4ADD = CB5.234
|
||||
T4ADD_CALC = CB5.235
|
||||
T4BOTTOM = CB5.236
|
||||
T4DOWN = CB5.237
|
||||
T4DUMP = CB5.238
|
||||
T4EOF = CB5.239
|
||||
T4FLUSH = CB5.240
|
||||
T4FREE_ALL = CB5.241
|
||||
T4GO = CB5.242
|
||||
T4KEY = CB5.243
|
||||
T4OPEN = CB5.244
|
||||
T4POSITION = CB5.245
|
||||
T4POSITION_SET = CB5.246
|
||||
T4RECNO = CB5.247
|
||||
T4REMOVE = CB5.248
|
||||
T4REMOVE_CALC = CB5.249
|
||||
T4SEEK = CB5.250
|
||||
T4SKIP = CB5.251
|
||||
T4TOP = CB5.252
|
||||
T4UP = CB5.253
|
||||
T4UP_TO_ROOT = CB5.254
|
||||
|
||||
U4ALLOC = CB5.255
|
||||
U4ALLOC_AGAIN = CB5.256
|
||||
U4ALLOC_ER = CB5.257
|
||||
U4ALLOC_FREE = CB5.258
|
||||
U4FREE = CB5.259
|
||||
U4NAME_CHAR = CB5.260
|
||||
U4NAME_EXT = CB5.261
|
||||
U4NAME_PIECE = CB5.262
|
||||
U4NCPY = CB5.263
|
||||
U4YYMMDD = CB5.264
|
||||
|
||||
EXPR4CALC_LOOKUP = CB5.265
|
||||
C4TRIM_N = CB5.266
|
||||
EXPR4FUNCTIONS = CB5.267
|
||||
C4DTOA45 = CB5.268
|
||||
EXPR4CALC_DELETE = CB5.269
|
||||
E4LOOKUP = CB5.270
|
||||
C4UPPER = CB5.271
|
||||
EXPR4CALC_NAME_CHANGE = CB5.272
|
||||
EXPR4CALC_MODIFY = CB5.273
|
||||
RELATE4FREE_RELATE = CB5.274
|
||||
EXPR4CALC_MASSAGE = CB5.275
|
||||
D4UPDATE_HEADER = CB5.276
|
||||
U4SWITCH = CB5.277
|
||||
DATE4FORMAT_MDX2 = CB5.278
|
||||
EXPR4DOUBLE2 = CB5.279
|
||||
D4POSITION2 = CB5.280
|
||||
F4DOUBLE2 = CB5.281
|
||||
T4POSITION2 = CB5.282
|
||||
F4MEMO_SET_LEN = CB5.283
|
||||
C4LTOA45 = CB5.284
|
||||
I4ADD_TAG = CB5.285
|
||||
EXPR4CALC_RESET = CB5.286
|
||||
T4IS_DESCENDING = CB5.287
|
||||
I4IS_PRODUCTION = CB5.288
|
||||
T4UNIQUE = CB5.289
|
||||
D4SEEK_N = CB5.290
|
||||
C4DLL_INST = CB5.291
|
||||
C4ATOD2 = CB5.292
|
||||
F4MEMO_CHECK = CB5.293
|
||||
D4UNLOCK_APPEND = CB5.294
|
||||
D4UNLOCK_DATA = CB5.295
|
||||
D4UNLOCK_FILE = CB5.296
|
||||
D4UNLOCK_RECORDS = CB5.297
|
||||
C4LOWER = CB5.298
|
||||
I4CHECK = CB5.299
|
||||
U4REMOVE = CB5.300
|
||||
|
||||
AREA4CREATE = CB5.301
|
||||
AREA4FREE = CB5.302
|
||||
AREA4NUMOBJECTS = CB5.303
|
||||
AREA4OBJFIRST = CB5.304
|
||||
AREA4OBJLAST = CB5.305
|
||||
AREA4OBJNEXT = CB5.306
|
||||
AREA4OBJPREV = CB5.307
|
||||
AREA4PAGEBREAK = CB5.308
|
||||
GROUP4CREATE = CB5.309
|
||||
GROUP4FOOTERFIRST = CB5.310
|
||||
GROUP4FOOTERNEXT = CB5.311
|
||||
GROUP4FOOTERPREV = CB5.312
|
||||
GROUP4FREE = CB5.313
|
||||
GROUP4HEADERFIRST = CB5.314
|
||||
GROUP4HEADERNEXT = CB5.315
|
||||
GROUP4HEADERPREV = CB5.316
|
||||
GROUP4NUMFOOTERS = CB5.317
|
||||
GROUP4NUMHEADERS = CB5.318
|
||||
GROUP4REPEATHEADER = CB5.319
|
||||
GROUP4RESETEXPRSET = CB5.320
|
||||
GROUP4RESETPAGE = CB5.321
|
||||
GROUP4RESETPAGENUM = CB5.322
|
||||
GROUP4SWAPFOOTER = CB5.323
|
||||
GROUP4SWAPHEADER = CB5.324
|
||||
OBJ4BITMAPSTATICCREATE = CB5.325
|
||||
OBJ4BITMAPSTATICFREE = CB5.326
|
||||
OBJ4BITMAPFILECREATE = CB5.327
|
||||
OBJ4BITMAPFILEFREE = CB5.328
|
||||
OBJ4BITMAPFIELDCREATE = CB5.329
|
||||
OBJ4BITMAPFIELDFREE = CB5.330
|
||||
OBJ4BRACKETS = CB5.331
|
||||
OBJ4CALCCREATE = CB5.332
|
||||
OBJ4CALCFREE = CB5.333
|
||||
OBJ4DATEFORMAT = CB5.334
|
||||
OBJ4DECIMALS = CB5.335
|
||||
OBJ4DELETE = CB5.336
|
||||
OBJ4DISPLAYONCE = CB5.337
|
||||
OBJ4DISPLAYZERO = CB5.338
|
||||
OBJ4EXPRCREATE = CB5.339
|
||||
OBJ4EXPRFREE = CB5.340
|
||||
OBJ4FIELDCREATE = CB5.341
|
||||
OBJ4FIELDFREE = CB5.342
|
||||
OBJ4FRAMECORNERS = CB5.343
|
||||
OBJ4FRAMECREATE = CB5.344
|
||||
OBJ4FRAMEFILL = CB5.345
|
||||
OBJ4FRAMEFREE = CB5.346
|
||||
OBJ4JUSTIFY = CB5.347
|
||||
OBJ4LEADINGZERO = CB5.348
|
||||
OBJ4LINECREATE = CB5.349
|
||||
OBJ4LINEFREE = CB5.350
|
||||
OBJ4LINEWIDTH = CB5.351
|
||||
OBJ4LOOKAHEAD = CB5.352
|
||||
OBJ4NUMERICTYPE = CB5.353
|
||||
OBJ4STYLE = CB5.354
|
||||
OBJ4TEXTCREATE = CB5.355
|
||||
OBJ4TEXTFREE = CB5.356
|
||||
OBJ4TOTALCREATE = CB5.357
|
||||
OBJ4TOTALFREE = CB5.358
|
||||
RELATE4RETRIEVE = CB5.359
|
||||
RELATE4SAVE = CB5.360
|
||||
REPORT4CAPTION = CB5.361
|
||||
REPORT4CURRENCY = CB5.362
|
||||
REPORT4DATEFORMAT = CB5.363
|
||||
REPORT4DECIMAL = CB5.364
|
||||
REPORT4DO = CB5.365
|
||||
REPORT4FREE = CB5.366
|
||||
REPORT4GENERATEPAGE = CB5.367
|
||||
REPORT4GROUPFIRST = CB5.368
|
||||
REPORT4GROUPLAST = CB5.369
|
||||
REPORT4GROUPLOOKUP = CB5.370
|
||||
REPORT4GROUPNEXT = CB5.371
|
||||
REPORT4GROUPPREV = CB5.372
|
||||
REPORT4GROUPHARDRESETS = CB5.373
|
||||
REPORT4INIT = CB5.374
|
||||
REPORT4MARGINS = CB5.375
|
||||
REPORT4NUMGROUPS = CB5.376
|
||||
REPORT4NUMSTYLES = CB5.377
|
||||
REPORT4OUTPUT = CB5.378
|
||||
REPORT4PAGEFREE = CB5.379
|
||||
REPORT4PAGEHEADERFOOTER = CB5.380
|
||||
REPORT4PAGEINIT = CB5.381
|
||||
REPORT4PAGEMARGINSGET = CB5.382
|
||||
REPORT4PAGEOBJFIRST = CB5.383
|
||||
REPORT4PAGEOBJNEXT = CB5.384
|
||||
REPORT4PAGESIZE = CB5.385
|
||||
REPORT4PAGESIZEGET = CB5.386
|
||||
REPORT4PARENT = CB5.387
|
||||
REPORT4PRINTERSELECT = CB5.388
|
||||
REPORT4PRINTERDC = CB5.389
|
||||
REPORT4QUERYSET = CB5.390
|
||||
REPORT4RETRIEVE = CB5.391
|
||||
REPORT4SAVE = CB5.392
|
||||
REPORT4SEPARATOR = CB5.393
|
||||
REPORT4SORTSET = CB5.394
|
||||
REPORT4STYLEFIRST = CB5.395
|
||||
REPORT4STYLELAST = CB5.396
|
||||
REPORT4STYLENEXT = CB5.397
|
||||
REPORT4STYLESELECT = CB5.398
|
||||
REPORT4STYLESELECTED = CB5.399
|
||||
REPORT4STYLESHEETLOAD = CB5.400
|
||||
REPORT4STYLESHEETSAVE = CB5.401
|
||||
REPORT4TITLEPAGE = CB5.402
|
||||
REPORT4TITLESUMMARY = CB5.403
|
||||
REPORT4TOSCREEN = CB5.404
|
||||
STYLE4COLOR = CB5.405
|
||||
STYLE4CREATE = CB5.406
|
||||
STYLE4DELETE = CB5.407
|
||||
STYLE4FREE = CB5.408
|
||||
STYLE4INDEX = CB5.409
|
||||
STYLE4LOOKUP = CB5.410
|
||||
TOTAL4CREATE = CB5.411
|
||||
TOTAL4FREE = CB5.412
|
||||
REPORT4DATADO = CB5.413
|
||||
TOTAL4ADDCONDITION = CB5.414
|
||||
REPORT4DATAFILESET = CB5.415
|
||||
REPORT4DATAGROUP = CB5.416
|
||||
OBJ4DATAFIELDSET = CB5.417
|
||||
WRITEDIB = CB5.418
|
||||
GETDIB = CB5.419
|
||||
PALETTESIZE = CB5.420
|
||||
FINDDIBBITS = CB5.421
|
||||
REPORT4INDEX_TYPE = CB5.422
|
||||
AREA4ADD_OBJECT = CB5.423
|
||||
OBJ4REMOVE = CB5.424
|
||||
GROUP4POSITIONSET = CB5.425
|
||||
REPORT4GET_PRINTERIC = CB5.426
|
||||
TOTAL4LOOKUP = CB5.427
|
||||
AREA4SORT_OBJ_TREE = CB5.428
|
||||
RELATE4LOOKUP_DATA = CB5.429
|
||||
REPORT4RETRIEVE2 = CB5.430
|
||||
RELATE4SAVE2 = CB5.431
|
||||
RELATE4RETRIEVE2 = CB5.432
|
||||
U4DELAY_SEC = CB5.433
|
||||
|
||||
T4BLOCK = CB5.451
|
||||
T4CHECK = CB5.452
|
||||
|
||||
CTRL4ADDCODE = CB5.500
|
||||
CTRL4CODELISTINIT = CB5.501
|
||||
CTRL4FREECTRLNODE = CB5.502
|
||||
CTRL4FREECODELIST = CB5.503
|
||||
CTRL4GETCTRLCODE = CB5.504
|
||||
CTRL4INITVBX = CB5.505
|
||||
CTRL4INITVBXUNDO = CB5.506
|
||||
|
||||
|
||||
X4BOTTOM = CB5.600
|
||||
X4INIT_WORK = CB5.601
|
||||
X4FILTER_TEST = CB5.602
|
||||
X4GO = CB5.603
|
||||
X4SEEK = CB5.604
|
||||
X4SEEK_DOUBLE = CB5.605
|
||||
X4SKIP = CB5.606
|
||||
X4TOP = CB5.607
|
||||
I4CHANGED = CB5.608
|
@ -1,34 +0,0 @@
|
||||
// sesadump.h : main header file for the SESADUMP application
|
||||
//
|
||||
|
||||
#ifndef __AFXWIN_H__
|
||||
#error include 'stdafx.h' before including this file for PCH
|
||||
#endif
|
||||
|
||||
#include "resource.h" // main symbols
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpApp:
|
||||
// See sesadump.cpp for the implementation of this class
|
||||
//
|
||||
|
||||
class CSesadumpApp : public CWinApp
|
||||
{
|
||||
public:
|
||||
CSesadumpApp();
|
||||
|
||||
// Overrides
|
||||
virtual BOOL InitInstance();
|
||||
|
||||
// Implementation
|
||||
|
||||
//{{AFX_MSG(CSesadumpApp)
|
||||
afx_msg void OnAppAbout();
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
BIN
ce/sesadump.ico
BIN
ce/sesadump.ico
Binary file not shown.
Before Width: | Height: | Size: 768 B |
177
ce/sesadump.mak
177
ce/sesadump.mak
@ -1,177 +0,0 @@
|
||||
# Microsoft Visual C++ generated build script - Do not modify
|
||||
|
||||
PROJ = SESADUMP
|
||||
DEBUG = 0
|
||||
PROGTYPE = 0
|
||||
CALLER =
|
||||
ARGS = ditte c:\temp\guy
|
||||
DLLS =
|
||||
D_RCDEFINES = /d_DEBUG
|
||||
R_RCDEFINES = /dNDEBUG
|
||||
ORIGIN = MSVC
|
||||
ORIGIN_VER = 1.00
|
||||
PROJPATH = C:\U\GUY\P.DUE\CE\
|
||||
USEMFC = 1
|
||||
CC = cl
|
||||
CPP = cl
|
||||
CXX = cl
|
||||
CCREATEPCHFLAG =
|
||||
CPPCREATEPCHFLAG = /YcSTDAFX.H
|
||||
CUSEPCHFLAG =
|
||||
CPPUSEPCHFLAG = /YuSTDAFX.H
|
||||
FIRSTC =
|
||||
FIRSTCPP = STDAFX.CPP
|
||||
RC = rc
|
||||
CFLAGS_D_WEXE = /nologo /G2 /W3 /Zi /AL /Od /D "_DEBUG" /I "\u\guy\p.due\cb5" /FR /GA /Fd"SESADUMP.PDB"
|
||||
CFLAGS_R_WEXE = /nologo /Gs /G2 /W3 /AL /O1 /D "NDEBUG" /I "\u\guy\p.due\cb5" /FR /GA
|
||||
LFLAGS_D_WEXE = /NOLOGO /NOD /NOE /PACKC:61440 /STACK:10240 /ALIGN:16 /ONERROR:NOEXE /CO
|
||||
LFLAGS_R_WEXE = /NOLOGO /NOD /PACKC:61440 /STACK:10240 /ALIGN:16 /ONERROR:NOEXE
|
||||
LIBS_D_WEXE = lafxcwd oldnames libw llibcew commdlg.lib shell.lib
|
||||
LIBS_R_WEXE = lafxcw oldnames libw llibcew commdlg.lib shell.lib
|
||||
RCFLAGS = /nologo /z
|
||||
RESFLAGS = /nologo /t
|
||||
RUNFLAGS =
|
||||
DEFFILE = SESADUMP.DEF
|
||||
OBJS_EXT =
|
||||
LIBS_EXT = ..\..\..\..\MSVC\LIB\ODBC.LIB
|
||||
!if "$(DEBUG)" == "1"
|
||||
CFLAGS = $(CFLAGS_D_WEXE)
|
||||
LFLAGS = $(LFLAGS_D_WEXE)
|
||||
LIBS = $(LIBS_D_WEXE)
|
||||
MAPFILE = nul
|
||||
RCDEFINES = $(D_RCDEFINES)
|
||||
!else
|
||||
CFLAGS = $(CFLAGS_R_WEXE)
|
||||
LFLAGS = $(LFLAGS_R_WEXE)
|
||||
LIBS = $(LIBS_R_WEXE)
|
||||
MAPFILE = nul
|
||||
RCDEFINES = $(R_RCDEFINES)
|
||||
!endif
|
||||
!if [if exist MSVC.BND del MSVC.BND]
|
||||
!endif
|
||||
SBRS = STDAFX.SBR \
|
||||
SESADUMP.SBR \
|
||||
MAINFRM.SBR \
|
||||
SESADDOC.SBR \
|
||||
SESADVW.SBR \
|
||||
SESA.SBR \
|
||||
COLUMNST.SBR \
|
||||
SESADLG.SBR
|
||||
|
||||
|
||||
SESADUMP_RCDEP = c:\u\guy\p.due\ce\sesadump.ico \
|
||||
c:\u\guy\p.due\ce\sesadump.rc2
|
||||
|
||||
|
||||
STDAFX_DEP = c:\u\guy\p.due\ce\stdafx.h
|
||||
|
||||
|
||||
SESADUMP_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\sesadump.h \
|
||||
c:\u\guy\p.due\ce\mainfrm.h \
|
||||
c:\u\guy\p.due\ce\sesaddoc.h \
|
||||
c:\u\guy\p.due\ce\sesadvw.h \
|
||||
c:\u\guy\p.due\ce\sesa.h
|
||||
|
||||
|
||||
MAINFRM_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\sesadump.h \
|
||||
c:\u\guy\p.due\ce\mainfrm.h \
|
||||
c:\u\guy\p.due\ce\sesadlg.h \
|
||||
c:\u\guy\p.due\ce\sesa.h
|
||||
|
||||
|
||||
SESADDOC_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\sesadump.h \
|
||||
c:\u\guy\p.due\ce\sesaddoc.h
|
||||
|
||||
|
||||
SESADVW_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\sesadump.h \
|
||||
c:\u\guy\p.due\ce\sesaddoc.h \
|
||||
c:\u\guy\p.due\ce\sesadvw.h
|
||||
|
||||
|
||||
SESA_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\columnst.h \
|
||||
c:\u\guy\p.due\ce\sesa.h
|
||||
|
||||
|
||||
COLUMNST_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\columnst.h
|
||||
|
||||
|
||||
SESADLG_DEP = c:\u\guy\p.due\ce\stdafx.h \
|
||||
c:\u\guy\p.due\ce\sesadump.h \
|
||||
c:\u\guy\p.due\ce\sesadlg.h
|
||||
|
||||
|
||||
ODBC_DEP =
|
||||
|
||||
all: $(PROJ).EXE $(PROJ).BSC
|
||||
|
||||
SESADUMP.RES: SESADUMP.RC $(SESADUMP_RCDEP)
|
||||
$(RC) $(RCFLAGS) $(RCDEFINES) -r SESADUMP.RC
|
||||
|
||||
STDAFX.OBJ: STDAFX.CPP $(STDAFX_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPCREATEPCHFLAG) /c STDAFX.CPP
|
||||
|
||||
SESADUMP.OBJ: SESADUMP.CPP $(SESADUMP_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c SESADUMP.CPP
|
||||
|
||||
MAINFRM.OBJ: MAINFRM.CPP $(MAINFRM_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c MAINFRM.CPP
|
||||
|
||||
SESADDOC.OBJ: SESADDOC.CPP $(SESADDOC_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c SESADDOC.CPP
|
||||
|
||||
SESADVW.OBJ: SESADVW.CPP $(SESADVW_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c SESADVW.CPP
|
||||
|
||||
SESA.OBJ: SESA.CPP $(SESA_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c SESA.CPP
|
||||
|
||||
COLUMNST.OBJ: COLUMNST.CPP $(COLUMNST_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c COLUMNST.CPP
|
||||
|
||||
SESADLG.OBJ: SESADLG.CPP $(SESADLG_DEP)
|
||||
$(CPP) $(CFLAGS) $(CPPUSEPCHFLAG) /c SESADLG.CPP
|
||||
|
||||
|
||||
$(PROJ).EXE:: SESADUMP.RES
|
||||
|
||||
$(PROJ).EXE:: STDAFX.OBJ SESADUMP.OBJ MAINFRM.OBJ SESADDOC.OBJ SESADVW.OBJ SESA.OBJ \
|
||||
COLUMNST.OBJ SESADLG.OBJ $(OBJS_EXT) $(DEFFILE)
|
||||
echo >NUL @<<$(PROJ).CRF
|
||||
STDAFX.OBJ +
|
||||
SESADUMP.OBJ +
|
||||
MAINFRM.OBJ +
|
||||
SESADDOC.OBJ +
|
||||
SESADVW.OBJ +
|
||||
SESA.OBJ +
|
||||
COLUMNST.OBJ +
|
||||
SESADLG.OBJ +
|
||||
$(OBJS_EXT)
|
||||
$(PROJ).EXE
|
||||
$(MAPFILE)
|
||||
c:\msvc\lib\+
|
||||
c:\msvc\mfc\lib\+
|
||||
..\..\..\..\MSVC\LIB\ODBC.LIB+
|
||||
$(LIBS)
|
||||
$(DEFFILE);
|
||||
<<
|
||||
link $(LFLAGS) @$(PROJ).CRF
|
||||
$(RC) $(RESFLAGS) SESADUMP.RES $@
|
||||
@copy $(PROJ).CRF MSVC.BND
|
||||
|
||||
$(PROJ).EXE:: SESADUMP.RES
|
||||
if not exist MSVC.BND $(RC) $(RESFLAGS) SESADUMP.RES $@
|
||||
|
||||
run: $(PROJ).EXE
|
||||
$(PROJ) $(RUNFLAGS)
|
||||
|
||||
|
||||
$(PROJ).BSC: $(SBRS)
|
||||
bscmake @<<
|
||||
/o$@ $(SBRS)
|
||||
<<
|
232
ce/sesadump.rc
232
ce/sesadump.rc
@ -1,232 +0,0 @@
|
||||
//Microsoft App Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""sesadump.rc2"" // non-App Studio edited resources\r\n"
|
||||
"\r\n"
|
||||
"#include ""afxres.rc"" \011// Standard components\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
IDR_MAINFRAME ICON DISCARDABLE "SESADUMP.ICO"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
|
||||
BEGIN
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
|
||||
MENUITEM "&About Sesadump...", ID_APP_ABOUT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit", ID_APP_EXIT
|
||||
END
|
||||
POPUP ""
|
||||
BEGIN
|
||||
MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
||||
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
|
||||
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Accelerator
|
||||
//
|
||||
|
||||
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
|
||||
BEGIN
|
||||
"N", ID_FILE_NEW, VIRTKEY,CONTROL
|
||||
"O", ID_FILE_OPEN, VIRTKEY,CONTROL
|
||||
"S", ID_FILE_SAVE, VIRTKEY,CONTROL
|
||||
"Z", ID_EDIT_UNDO, VIRTKEY,CONTROL
|
||||
"X", ID_EDIT_CUT, VIRTKEY,CONTROL
|
||||
"C", ID_EDIT_COPY, VIRTKEY,CONTROL
|
||||
"V", ID_EDIT_PASTE, VIRTKEY,CONTROL
|
||||
VK_BACK, ID_EDIT_UNDO, VIRTKEY,ALT
|
||||
VK_DELETE, ID_EDIT_CUT, VIRTKEY,SHIFT
|
||||
VK_INSERT, ID_EDIT_COPY, VIRTKEY,CONTROL
|
||||
VK_INSERT, ID_EDIT_PASTE, VIRTKEY,SHIFT
|
||||
VK_F6, ID_NEXT_PANE, VIRTKEY
|
||||
VK_F6, ID_PREV_PANE, VIRTKEY,SHIFT
|
||||
END
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_ABOUTBOX DIALOG DISCARDABLE 34, 22, 217, 55
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About Sesadump"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
ICON IDR_MAINFRAME,IDC_STATIC,11,17,18,20
|
||||
LTEXT "Sesa Dump Application Version 1.0",IDC_STATIC,40,10,119,
|
||||
8
|
||||
LTEXT "Copyright \251 1997",IDC_STATIC,40,25,119,8
|
||||
DEFPUSHBUTTON "OK",IDOK,176,6,32,14,WS_GROUP
|
||||
END
|
||||
|
||||
IDD_CONNECTION DIALOG DISCARDABLE 0, 0, 187, 76
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Connect to"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,25,60,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,105,60,50,14
|
||||
EDITTEXT IDC_DSN,55,5,126,12,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_CONNECT,55,25,126,12,ES_AUTOHSCROLL
|
||||
LTEXT "Data source",IDC_STATIC,0,10,50,7
|
||||
LTEXT "Connection",IDC_STATIC,0,25,45,7
|
||||
LTEXT "Table",IDC_STATIC,0,45,45,7
|
||||
EDITTEXT IDC_TABLE,55,46,126,12,ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE PRELOAD DISCARDABLE
|
||||
BEGIN
|
||||
IDR_MAINFRAME "Sesadump\nPRASSI\nSesadu Document\n\n\nSesadu.Document\nSesadu Document"
|
||||
END
|
||||
|
||||
STRINGTABLE PRELOAD DISCARDABLE
|
||||
BEGIN
|
||||
AFX_IDS_APP_TITLE "Sesadump"
|
||||
AFX_IDS_IDLEMESSAGE "Ready"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_INDICATOR_EXT "EXT"
|
||||
ID_INDICATOR_CAPS "CAP"
|
||||
ID_INDICATOR_NUM "NUM"
|
||||
ID_INDICATOR_SCRL "SCRL"
|
||||
ID_INDICATOR_OVR "OVR"
|
||||
ID_INDICATOR_REC "REC"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_FILE_NEW "Create a new document"
|
||||
ID_FILE_OPEN "Open an existing document"
|
||||
ID_FILE_CLOSE "Close the active document"
|
||||
ID_FILE_SAVE "Save the active document"
|
||||
ID_FILE_SAVE_AS "Save the active document with a new name"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_APP_ABOUT "Display program information, version number and copyright"
|
||||
ID_APP_EXIT "Quit the application; prompts to save documents"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_FILE_MRU_FILE1 "Open this document"
|
||||
ID_FILE_MRU_FILE2 "Open this document"
|
||||
ID_FILE_MRU_FILE3 "Open this document"
|
||||
ID_FILE_MRU_FILE4 "Open this document"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_NEXT_PANE "Switch to the next window pane"
|
||||
ID_PREV_PANE "Switch back to the previous window pane"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
ID_EDIT_CLEAR "Erase the selection"
|
||||
ID_EDIT_CLEAR_ALL "Erase everything"
|
||||
ID_EDIT_COPY "Copy the selection and put it on the Clipboard"
|
||||
ID_EDIT_CUT "Cut the selection and put it on the Clipboard"
|
||||
ID_EDIT_FIND "Find the specified text"
|
||||
ID_EDIT_PASTE "Insert Clipboard contents"
|
||||
ID_EDIT_REPEAT "Repeat the last action"
|
||||
ID_EDIT_REPLACE "Replace specific text with different text"
|
||||
ID_EDIT_SELECT_ALL "Select the entire document"
|
||||
ID_EDIT_UNDO "Undo the last action"
|
||||
ID_EDIT_REDO "Redo the previously undone action"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
AFX_IDS_SCSIZE "Change the window size"
|
||||
AFX_IDS_SCMOVE "Change the window position"
|
||||
AFX_IDS_SCMINIMIZE "Reduce the window to an icon"
|
||||
AFX_IDS_SCMAXIMIZE "Enlarge the window to full size"
|
||||
AFX_IDS_SCNEXTWINDOW "Switch to the next document window"
|
||||
AFX_IDS_SCPREVWINDOW "Switch to the previous document window"
|
||||
AFX_IDS_SCCLOSE "Close the active window and prompts to save the documents"
|
||||
END
|
||||
|
||||
STRINGTABLE DISCARDABLE
|
||||
BEGIN
|
||||
AFX_IDS_SCRESTORE "Restore the window to normal size"
|
||||
AFX_IDS_SCTASKLIST "Activate Task List"
|
||||
END
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#include "sesadump.rc2" // non-App Studio edited resources
|
||||
|
||||
#include "afxres.rc" // Standard components
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
@ -1,52 +0,0 @@
|
||||
//
|
||||
// SESADUMP.RC2 - resources App Studio does not edit directly
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#error this file is not editable by App Studio
|
||||
#endif //APSTUDIO_INVOKED
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Version stamp for this .EXE
|
||||
|
||||
#include "ver.h"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,0,0,1
|
||||
PRODUCTVERSION 1,0,0,1
|
||||
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS VS_FF_DEBUG|VS_FF_PRIVATEBUILD|VS_FF_PRERELEASE
|
||||
#else
|
||||
FILEFLAGS 0 // final version
|
||||
#endif
|
||||
FILEOS VOS_DOS_WINDOWS16
|
||||
FILETYPE VFT_APP
|
||||
FILESUBTYPE 0 // not used
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual
|
||||
BEGIN
|
||||
VALUE "CompanyName", "\0"
|
||||
VALUE "FileDescription", "SESADUMP MFC Application\0"
|
||||
VALUE "FileVersion", "1.0.001\0"
|
||||
VALUE "InternalName", "SESADUMP\0"
|
||||
VALUE "LegalCopyright", "\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename","SESADUMP.EXE\0"
|
||||
VALUE "ProductName", "SESADUMP\0"
|
||||
VALUE "ProductVersion", "1.0.001\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
// English language (0x409) and the Windows ANSI codepage (1252)
|
||||
END
|
||||
END
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Add additional manually edited resources here...
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@ -1,72 +0,0 @@
|
||||
// sesadvw.cpp : implementation of the CSesadumpView class
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "sesadump.h"
|
||||
|
||||
#include "sesaddoc.h"
|
||||
#include "sesadvw.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#undef THIS_FILE
|
||||
static char BASED_CODE THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpView
|
||||
|
||||
IMPLEMENT_DYNCREATE(CSesadumpView, CView)
|
||||
|
||||
BEGIN_MESSAGE_MAP(CSesadumpView, CView)
|
||||
//{{AFX_MSG_MAP(CSesadumpView)
|
||||
// NOTE - the ClassWizard will add and remove mapping macros here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code!
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpView construction/destruction
|
||||
|
||||
CSesadumpView::CSesadumpView()
|
||||
{
|
||||
// TODO: add construction code here
|
||||
}
|
||||
|
||||
CSesadumpView::~CSesadumpView()
|
||||
{
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpView drawing
|
||||
|
||||
void CSesadumpView::OnDraw(CDC* pDC)
|
||||
{
|
||||
CSesadumpDoc* pDoc = GetDocument();
|
||||
ASSERT_VALID(pDoc);
|
||||
|
||||
// TODO: add draw code for native data here
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpView diagnostics
|
||||
|
||||
#ifdef _DEBUG
|
||||
void CSesadumpView::AssertValid() const
|
||||
{
|
||||
CView::AssertValid();
|
||||
}
|
||||
|
||||
void CSesadumpView::Dump(CDumpContext& dc) const
|
||||
{
|
||||
CView::Dump(dc);
|
||||
}
|
||||
|
||||
CSesadumpDoc* CSesadumpView::GetDocument() // non-debug version is inline
|
||||
{
|
||||
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CSesadumpDoc)));
|
||||
return (CSesadumpDoc*)m_pDocument;
|
||||
}
|
||||
#endif //_DEBUG
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CSesadumpView message handlers
|
43
ce/sesadvw.h
43
ce/sesadvw.h
@ -1,43 +0,0 @@
|
||||
// sesadvw.h : interface of the CSesadumpView class
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CSesadumpView : public CView
|
||||
{
|
||||
protected: // create from serialization only
|
||||
CSesadumpView();
|
||||
DECLARE_DYNCREATE(CSesadumpView)
|
||||
|
||||
// Attributes
|
||||
public:
|
||||
CSesadumpDoc* GetDocument();
|
||||
|
||||
// Operations
|
||||
public:
|
||||
|
||||
// Implementation
|
||||
public:
|
||||
virtual ~CSesadumpView();
|
||||
virtual void OnDraw(CDC* pDC); // overridden to draw this view
|
||||
#ifdef _DEBUG
|
||||
virtual void AssertValid() const;
|
||||
virtual void Dump(CDumpContext& dc) const;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
// Generated message map functions
|
||||
protected:
|
||||
//{{AFX_MSG(CSesadumpView)
|
||||
// NOTE - the ClassWizard will add and remove member functions here.
|
||||
// DO NOT EDIT what you see in these blocks of generated code !
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
#ifndef _DEBUG // debug version in sesadvw.cpp
|
||||
inline CSesadumpDoc* CSesadumpView::GetDocument()
|
||||
{ return (CSesadumpDoc*)m_pDocument; }
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
@ -1,5 +0,0 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// stdafx.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
@ -1,9 +0,0 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#include <afxwin.h> // MFC core and standard components
|
||||
#include <afxext.h> // MFC extensions
|
||||
#include <afxcoll.h> // MFC collections
|
||||
#include <afxdb.h> // MFC ODBC classes
|
Loading…
x
Reference in New Issue
Block a user