|
From: Micha N. <md...@us...> - 2004-08-18 13:50:09
|
Update of /cvsroot/tdbf/tdbf In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12954 Modified Files: Dbf.pas Dbf_Common.pas Dbf_DbfFile.pas Dbf_Fields.pas Dbf_IdxFile.pas Dbf_Memo.pas history.txt Log Message: fixed: use correct dbf version when creating table to decide field types (rep by sysklop) Index: history.txt =================================================================== RCS file: /cvsroot/tdbf/tdbf/history.txt,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** history.txt 18 Aug 2004 12:57:58 -0000 1.58 --- history.txt 18 Aug 2004 13:49:59 -0000 1.59 *************** *** 48,51 **** --- 48,52 ---- - fixed: tryexclusive/packtable/endexclusive fail because of memo (rep by sysklop) - fixed: crash when calling {un,}locktable on closed dataset (rep by sysklop) + - fixed: use correct dbf version when creating table to decide field types Index: Dbf_DbfFile.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf_DbfFile.pas,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** Dbf_DbfFile.pas 18 Aug 2004 12:55:44 -0000 1.55 --- Dbf_DbfFile.pas 18 Aug 2004 13:49:59 -0000 1.56 *************** *** 47,51 **** FIndexNames: TStringList; FIndexFiles: TList; ! FDbfVersion: xBaseVersion; FPrevBuffer: PChar; FRecordBufferSize: Integer; --- 47,51 ---- FIndexNames: TStringList; FIndexFiles: TList; ! FDbfVersion: TXBaseVersion; FPrevBuffer: PChar; FRecordBufferSize: Integer; *************** *** 121,125 **** property UseCodePage: Cardinal read FUseCodePage write FUseCodePage; property FileLangId: Byte read FFileLangId write FFileLangId; ! property DbfVersion: xBaseVersion read FDbfVersion write FDbfVersion; property PrevBuffer: PChar read FPrevBuffer; property ForceClose: Boolean read FForceClose; --- 121,125 ---- property UseCodePage: Cardinal read FUseCodePage write FUseCodePage; property FileLangId: Byte read FFileLangId write FFileLangId; ! property DbfVersion: TXBaseVersion read FDbfVersion write FDbfVersion; property PrevBuffer: PChar read FPrevBuffer; property ForceClose: Boolean read FForceClose; Index: Dbf.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf.pas,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** Dbf.pas 18 Aug 2004 12:57:52 -0000 1.79 --- Dbf.pas 18 Aug 2004 13:49:59 -0000 1.80 *************** *** 461,464 **** --- 461,475 ---- {$endif} + function TableLevelToDbfVersion(TableLevel: integer): TXBaseVersion; + begin + case TableLevel of + 3: Result := xBaseIII; + 7: Result := xBaseVII; + TDBF_TABLELEVEL_FOXPRO: Result := xFoxPro; + else + {4:} Result := xBaseIV; + end; + end; + //========================================================== //============ TDbfBlobStream *************** *** 1249,1255 **** function TDbf.LockTable(const Wait: Boolean): Boolean; begin ! if FDbfFile = nil then ! exit; ! Result := FDbfFile.LockAllPages(Wait); end; --- 1260,1264 ---- function TDbf.LockTable(const Wait: Boolean): Boolean; begin ! CheckActive; Result := FDbfFile.LockAllPages(Wait); end; *************** *** 1257,1263 **** procedure TDbf.UnlockTable; begin ! if FDbfFile = nil then ! exit; ! FDbfFile.UnlockAllPages; end; --- 1266,1270 ---- procedure TDbf.UnlockTable; begin ! CheckActive; FDbfFile.UnlockAllPages; end; *************** *** 1383,1386 **** --- 1390,1395 ---- begin DbfFieldDefs := TDbfFieldDefs.Create(Self); + DbfFieldDefs.DbfVersion := TableLevelToDbfVersion(FTableLevel); + DbfFieldDefs.UseFloatFields := FUseFloatFields; // get fields -> fielddefs if no fielddefs *************** *** 1410,1420 **** InitDbfFile(pfExclusiveCreate); FDbfFile.CopyDateTimeAsString := FInCopyFrom and FCopyDateTimeAsString; ! case FTableLevel of ! 3: FDbfFile.DbfVersion := xBaseIII; ! 7: FDbfFile.DbfVersion := xBaseVII; ! TDBF_TABLELEVEL_FOXPRO: FDbfFile.DbfVersion := xFoxPro; ! else ! {4:} FDbfFile.DbfVersion := xBaseIV; ! end; FDbfFile.FileLangID := FLanguageID; FDbfFile.Open; --- 1419,1423 ---- InitDbfFile(pfExclusiveCreate); FDbfFile.CopyDateTimeAsString := FInCopyFrom and FCopyDateTimeAsString; ! FDbfFile.DbfVersion := TableLevelToDbfVersion(FTableLevel); FDbfFile.FileLangID := FLanguageID; FDbfFile.Open; Index: Dbf_Common.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf_Common.pas,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** Dbf_Common.pas 31 Jul 2004 17:26:54 -0000 1.43 --- Dbf_Common.pas 18 Aug 2004 13:49:59 -0000 1.44 *************** *** 31,35 **** rBookmarkData = Integer; ! xBaseVersion = (xUnknown, xClipper, xBaseIII, xBaseIV, xBaseV, xFoxPro, xBaseVII); TSearchKeyType = (stEqual, stGreaterEqual, stGreater); --- 31,35 ---- rBookmarkData = Integer; ! TXBaseVersion = (xUnknown, xClipper, xBaseIII, xBaseIV, xBaseV, xFoxPro, xBaseVII); TSearchKeyType = (stEqual, stGreaterEqual, stGreater); Index: Dbf_Fields.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf_Fields.pas,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Dbf_Fields.pas 31 Jul 2004 17:26:54 -0000 1.15 --- Dbf_Fields.pas 18 Aug 2004 13:49:59 -0000 1.16 *************** *** 37,41 **** FIsLockField: Boolean; ! function GetDbfVersion: xBaseVersion; procedure SetNativeFieldType(lFieldType: TDbfFieldType); procedure SetFieldType(lFieldType: TFieldType); --- 37,41 ---- FIsLockField: Boolean; ! function GetDbfVersion: TXBaseVersion; procedure SetNativeFieldType(lFieldType: TDbfFieldType); procedure SetFieldType(lFieldType: TFieldType); *************** *** 49,53 **** procedure AssignTo(Dest: TPersistent); override; ! property DbfVersion: xBaseVersion read GetDbfVersion; public constructor Create(Collection: TCollection); override; --- 49,53 ---- procedure AssignTo(Dest: TPersistent); override; ! property DbfVersion: TXBaseVersion read GetDbfVersion; public constructor Create(Collection: TCollection); override; *************** *** 84,88 **** private FOwner: TPersistent; ! FDbfVersion: xBaseVersion; FUseFloatFields: Boolean; --- 84,88 ---- private FOwner: TPersistent; ! FDbfVersion: TXBaseVersion; FUseFloatFields: Boolean; *************** *** 101,105 **** property Items[Idx: Integer]: TDbfFieldDef read GetItem; ! property DbfVersion: xBaseVersion read FDbfVersion write FDbfVersion; property UseFloatFields: Boolean read FUseFloatFields write FUseFloatFields; end; --- 101,105 ---- property Items[Idx: Integer]: TDbfFieldDef read GetItem; ! property DbfVersion: TXBaseVersion read FDbfVersion write FDbfVersion; property UseFloatFields: Boolean read FUseFloatFields write FUseFloatFields; end; *************** *** 290,294 **** end; ! function TDbfFieldDef.GetDbfVersion: xBaseVersion; begin Result := TDbfFieldDefs(Collection).DbfVersion; --- 290,294 ---- end; ! function TDbfFieldDef.GetDbfVersion: TXBaseVersion; begin Result := TDbfFieldDefs(Collection).DbfVersion; Index: Dbf_IdxFile.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf_IdxFile.pas,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** Dbf_IdxFile.pas 18 Aug 2004 09:01:19 -0000 1.62 --- Dbf_IdxFile.pas 18 Aug 2004 13:49:59 -0000 1.63 *************** *** 222,226 **** FHeaderModified: array[0..MaxIndexes-1] of Boolean; FIndexHeader: Pointer; ! FIndexVersion: xBaseVersion; FRoots: array[0..MaxIndexes-1] of TIndexPage; FLeaves: array[0..MaxIndexes-1] of TIndexPage; --- 222,226 ---- FHeaderModified: array[0..MaxIndexes-1] of Boolean; FIndexHeader: Pointer; ! FIndexVersion: TXBaseVersion; FRoots: array[0..MaxIndexes-1] of TIndexPage; FLeaves: array[0..MaxIndexes-1] of TIndexPage; *************** *** 356,360 **** property KeyLen: Integer read GetKeyLen; ! property IndexVersion: xBaseVersion read FIndexVersion; property EntryHeaderSize: Integer read FEntryHeaderSize; property KeyType: Char read GetKeyType; --- 356,360 ---- property KeyLen: Integer read GetKeyLen; ! property IndexVersion: TXBaseVersion read FIndexVersion; property EntryHeaderSize: Integer read FEntryHeaderSize; property KeyType: Char read GetKeyType; Index: Dbf_Memo.pas =================================================================== RCS file: /cvsroot/tdbf/tdbf/Dbf_Memo.pas,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** Dbf_Memo.pas 18 Aug 2004 12:55:59 -0000 1.24 --- Dbf_Memo.pas 18 Aug 2004 13:49:59 -0000 1.25 *************** *** 16,20 **** protected FDbfFile: pointer; ! FDbfVersion: xBaseVersion; FMemoRecordSize: Integer; FOpened: Boolean; --- 16,20 ---- protected FDbfFile: pointer; ! FDbfVersion: TXBaseVersion; FMemoRecordSize: Integer; FOpened: Boolean; *************** *** 36,40 **** procedure WriteMemo(var BlockNo: Integer; ReadSize: Integer; Src: TStream); ! property DbfVersion: xBaseVersion read FDbfVersion write FDbfVersion; property MemoRecordSize: Integer read FMemoRecordSize write FMemoRecordSize; end; --- 36,40 ---- procedure WriteMemo(var BlockNo: Integer; ReadSize: Integer; Src: TStream); ! property DbfVersion: TXBaseVersion read FDbfVersion write FDbfVersion; property MemoRecordSize: Integer read FMemoRecordSize write FMemoRecordSize; end; |