Files
TeslaRel410/BORLAND/BDE/EXAMPLES/C/ADDRESS/ADDRESS.H
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

269 lines
9.3 KiB
C++

// BDE - (C) Copyright 1994 by Borland International
#include <windows.h>
#include <commdlg.h>
#include <idapi.h>
#include <ctl3d.h>
#include <cderr.h>
#include <string.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h> // for date structure and getdate function
#include <direct.h>
#include <errno.h>
#include <malloc.h>
#include <ctype.h>
#include "id_defs.h"
#include "macro.h"
// Macro for Subclassing the edit control.
#define SubClassWindow(hWnd, lpfn) \
((WNDPROC)SetWindowLong((hWnd), GWL_WNDPROC, \
(LPARAM)(WNDPROC)(lpfn)))
// Define used for Microsoft compilers
#if defined(_MSC_VER)
#define farmalloc(parm) _fmalloc(parm)
#define farfree(parm) _ffree(parm)
// Leave it blank on purpose as VC++ minds having far declared.
#define ABFAR
#endif
#if defined(__TURBOC__) && defined(_Windows)
#define ABFAR far
#endif
// Definitions needed for engine.c
#define NAMELEN 20
#define ADDRESSLEN 40
#define CITYLEN 20
#define STATELEN 3
#define ZIPLEN 13
#define PHONELEN 21
#define DATELEN 11
#define COMMENTLEN 300
#define TOP 0
#define BOTTOM 2
#define PREV_REC -1
#define NEXT_REC 1
#define RANGEERROR 2
#define STRLEN 256
#define MAXFILENAMELEN 256
#define MAXFILETITLELEN 256
#define MAXPASSLEN 30
#define MAXALIAS 256
#define szINTERBASE "INTERBASE TABLE"
#define szSYBASE "SYBASE"
#define szORACLE "ORACLE"
#define szPERSONAL "Personal"
#define szBUSINESS "Business"
#define NEW 1
#define OPEN 2
#define MAXCHARLEN 60000L
#define FILEHANDLESNEEDED 40
typedef UINT (CALLBACK* FARHOOK)(HWND, UINT, WPARAM, LPARAM);
// Externs for global data
extern HINSTANCE hInst;
extern HWND hMainWnd;
extern HWND hErrorWnd;
extern BOOL NewRecMode;
extern BOOL RangeSet;
extern WNDPROC _wpOrigWndProc;
extern FARHOOK lpfnFileHook;
extern UINT16 iMSGFileOK;
extern BOOL bIsServer;
// Variables for table creation
extern const UINT16 uNumFields; // used in engine.c
extern const UINT16 uNumIndexes; // used in engine.c
extern const UINT16 uNumRecs; // Number of records to insert
// The name of the table to use and the directory of where to put it.
extern const char far szTblName[];
extern char far szTblDirectory[];
extern char far szPrivDirectory[];
extern const char far szTblType[];
// Structures used throughout the code.
extern FLDDesc ABFAR fldDesc[];
extern IDXDesc ABFAR idxDBDesc[];
extern IDXDesc ABFAR idxIBPDDesc[];
// Variables for ENGINE.C
typedef struct {
CHAR FName[NAMELEN];
CHAR LName[NAMELEN];
CHAR Spouse[ADDRESSLEN];
CHAR Addrs1[ADDRESSLEN];
CHAR Addrs2[ADDRESSLEN];
CHAR City[CITYLEN];
CHAR State[STATELEN];
CHAR Zip[ZIPLEN];
CHAR Phone1[PHONELEN];
CHAR Phone2[PHONELEN];
CHAR Date1[DATELEN];
CHAR Comment[COMMENTLEN];
} RecordType;
// Structures for OpenFile dialog.
typedef struct
{
OPENFILENAME ofn;
CHAR szFile[MAXFILENAMELEN];
CHAR szFileTitle[MAXFILETITLELEN];
CHAR szDirectory[DBIMAXPATHLEN + 1];
CHAR szTitle[DBIMAXNAMELEN];
}FOCHUNK;
typedef FOCHUNK FAR *LPFOCHUNK;
typedef struct
{
CHAR Password[MAXPASSLEN];
CHAR Alias[DBIMAXTBLNAMELEN];
CHAR Database[DBIMAXTBLNAMELEN];
}PASSSTRUCT;
typedef struct
{
phDBIDb phDb;
UINT16 uType;
}ABCREATESTRUCT;
typedef ABCREATESTRUCT FAR *pCS;
typedef struct
{
DBINAME szTagName;
DBIKEYEXP szKeyExp;
UINT16 iFldsInKey;
DBIKEY aiKeyFld;
DBIKEY aiKeyLen;
}ABIDXDESC;
typedef ABIDXDESC FAR *pABIDXDESC;
typedef struct
{
phDBICur phCur;
hDBIDb hDb;
}ABHANDLES;
typedef ABHANDLES FAR *pAbHandles;
typedef struct
{
CHAR FieldName[DBIMAXNAMELEN + 2];
}FIELDNAME;
typedef FIELDNAME FAR *pFIELDName;
// Function prototypes for ADR_MAIN.C
BOOL InitApp(int nCmdShow);
long FAR _pascal _export MainWndProc(HWND, UINT, UINT, LONG);
BOOL FillStruct(RecordType *, UINT16, pCHAR);
BOOL DisplayTable(hDBICur hCur);
BOOL TableExist(pCHAR);
BOOL FillTable (hDBICur hCur, pCHAR ABType);
BOOL DispRec(RecordType *);
DBIResult MoveRec (hDBICur hCur, INT16);
void CheckButtons(hDBICur hCur);
void SetupEdits(void);
BOOL SaveRec(hDBICur hCur, BOOL);
BOOL GetRec(RecordType *);
BOOL DeleteRecord(hDBICur hCur);
void SetControl(UINT16, BOOL);
UINT16 FillDropList (HWND, UINT16, UINT16, pABIDXDESC, pCHAR);
void SetFNameFocus(void);
BOOL ClearDlg(void);
BOOL Varified(void);
BOOL CanContinue(pCHAR, UINT16);
void EndNewRec(hDBICur hCur);
DBIResult SetDefaultDate (void);
void FillFieldList(HWND);
void GetField(RecordType *, pCHAR, UINT16);
void PutField(RecordType *, pCHAR, UINT16);
DBISearchCond GetCond(HWND);
void FillAliasCBBox(pDBDesc pAliases, UINT32 uNumAliases,
UINT16 CBId, HWND hWnd);
BOOL FillFileList (HWND hWnd, UINT16 LBId, hDBIDb hDb);
void SetFieldNames(hDBICur hCur);
pCHAR Proper(pCHAR String);
void SetAll(BOOL bAction);
BOOL HourGlassCursor (BOOL turnOn);
// Function prototypes for ADR_UTIL.C
UINT16 WinMsg(pCHAR, UINT16, UINT16);
void ChangeEntryMode(hDBICur hCur);
int MakeFullPath(pCHAR pszDirectory, pCHAR pszRelativeDirectory);
// Functions for ENGINE.C
DBIResult DbInit(void);
DBIResult DbExit(void);
DBIResult CreateTable(hDBIDb hDb, phDBICur phCur, pCHAR);
DBIResult AddRecord(hDBICur hCur, RecordType *, BOOL);
DBIResult SetDate(pDATE Date, pCHAR pszString);
DBIResult GetTable(hDBIDb hDb, phDBICur phCur);
DBIResult CloseDb(phDBIDb phDb);
DBIResult GetData(hDBICur hCur, RecordType *);
DBIResult FillRec(hDBICur hCur, pBYTE, RecordType *);
DBIResult GoTop(hDBICur hCur, BOOL bMoveRec);
DBIResult GetNextRec(hDBICur hCur);
DBIResult GetPrevRec(hDBICur hCur);
DBIResult GoBottom(hDBICur hCur, BOOL bMoveRec);
DBIResult SetIndex(phDBICur phCur, pCHAR szTagName);
DBIResult SetupIndex(phDBICur phCur, pCHAR szName, pCHAR szTagName,
UINT16 IndexId);
BOOL AtEOF(hDBICur hCur);
BOOL AtBOF(hDBICur hCur);
DBIResult FillIndexStr(hDBICur hCur, hDBIDb hDb, pABIDXDESC *pIndexes,
pCHAR pszActIdx, pUINT16 puIndexes);
DBIResult DeleteRec(hDBICur hCur);
DBIResult SetRange(RecordType *pHighRec, RecordType *pLowRec,
BOOL bHighInclude, BOOL bLowInclude, hDBICur hCur,
BOOL bHighEmpty, BOOL bLowEmpty);
DBIResult FillBuf(hDBICur hCur, pBYTE pRecBuf, RecordType* pString);
DBIResult Search(hDBICur hCur, DBISearchCond eCond, BOOL bDirect,
UINT16 iFlds, UINT16 iLen, RecordType *pKey);
DBIResult ResetRange(hDBICur hCur);
DBIResult DateEncode(UINT16 mon, UINT16 day, UINT16 year, pDATE pTempDate);
DBIResult GetDateFormat(pFMTDate pDate);
DBIResult GetDirectory(hDBIDb hDb, pCHAR pszBuffer);
DBIResult FillAliasStr(pDBDesc *Alias, pUINT32 plNumAliases);
DBIResult OpenDB(phDBIDb phDb, pCHAR pszTableType, pCHAR pszPassword,
pCHAR pszAlias);
DBIResult DisplayError(DBIResult rslt, pCHAR* pMsg);
DBIResult GetFieldInfo(pCHAR pFld, pUINT16 FldNum, pUINT16 FldLen,
hDBICur hCur, UINT16 iFields);
void StripChar (pCHAR Dest, pCHAR Src, CHAR Char);
DBIResult GetMdxName(hDBICur hCur, pCHAR MdxName);
DBIResult GetIndexDescs(hDBIDb hDb, pIDXDesc AllDesc);
DBIResult GetFldNames(hDBICur hCur, pFIELDName pFieldNames);
DBIResult CloseTable(phDBICur pCur);
DBIResult CheckTable(hDBICur hCur, pBOOL pbFlag);
DBIResult GetTblType(hDBICur hCur, pCHAR szTableType);
DBIResult InitIndex1(phDBICur phCur);
DBIResult GetTableList(hDBIDb hDb, phDBICur phTblCur);
DBIResult GetNextTblRec(hDBICur hTblCur, pTBLBaseDesc pbaseDesc);
DBIResult DeleteTable(phDBICur phCur, hDBIDb hDb, pCHAR TblName,
pCHAR TblType);
// Functions for ADRCMDLG.C
BOOL FAR _pascal _export PasswdDlg (HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export TypeDlg (HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export FileHook(HWND, UINT, WPARAM, LPARAM);
void InitializeStruct(LPSTR, pCS);
void ProcessCDError(UINT32 dwErrorCode);
BOOL ChkExt(pCHAR szFileName);
BOOL IsStandard(pCHAR szAlias, pDBDesc pAliases, UINT32 uNumAliases);
void SetupDialog(HWND hDlg, INT16 Action);
// Functions for ADR_DLGS.C
long FAR _pascal _export EditSubClassProc(HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export AboutDlg(HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export OrderDlg(HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export RangeDlg(HWND, WORD, WORD, LONG);
BOOL FAR _pascal _export SearchDlg(HWND, WORD, WORD, LONG);