[Lazarus] TDBF File is NOT created!!! FieldDefs.add( field, param, param ) does NOT create fields.
Peter E Williams
foss.game.pascal.developer at iinet.net.au
Thu Sep 2 01:42:57 CEST 2010
SOLVED !!!
On Wed, 01 Sep 2010 13:00:50 -0400 waldo kitty wrote:
> On 9/1/2010 08:45, Peter E Williams wrote:
> > Hi all,
> >
> > This one is really puzzling. I thought that I was doing everything okay
> > to generate a new TDBF file... but I cannot create the file. The
> > following is tracetestUnit1.pas which is a test unit to create a dBase
> > format TDbf database file.
> >
> > Output to memo1 follows:
> >
> > FilePath
> > = /home/pewink/Public/My_code/Lazarus_source/pewink/Hexxpawn/lazarus/0.5.alpha/
> > TableName = hex8_log.dbf
> > Trace File does not exist.
> > closing Trace file.
>
> ummm.... the file doesn't exist yet you close it anyway without it having been
> opened?
>
> > Starting to add fields with .FieldDefs
> > finished adding fields.
> > closing trace file.
> > Opening Trace File.
> > Exception opening trace file.
After to procedure changes (see below). First time procedure is called (file does not exist):
FilePath = /home/pewink/Public/My_code/Lazarus_source/pewink/Hexxpawn/lazarus/0.5.alpha/
TableName = hex8_log.dbf
Starting to add fields with .FieldDefs
finished adding fields.
2.closing trace file.
Opening Trace File.
FindLast record.
3.closing trace file.
2nd time, file exists.
FilePath = /home/pewink/Public/My_code/Lazarus_source/pewink/Hexxpawn/lazarus/0.5.alpha/
TableName = hex8_log.dbf
Opening Trace File.
FindLast record.
3.closing trace file.
procedure TForm1.open_trace_file;
var
S : String;
I : integer;
begin
S := Application.ExeName;
// hack for Mac
I := Pos('.app/Contents/MacOS/', S);
if (I > 0) then
S := Copy(S,1, I+3);
try
begin
Trace_File_DBF := TDbf.Create(nil);
Trace_File_DBF.TableLevel := Longint(TXBaseConst);
Trace_File_DBF.FilePath := ExtractFilePath(S);
Trace_File_DBF.TableName := filename_Trace_File_DBF;
memo1.lines.add( 'FilePath = ' + Trace_File_DBF.FilePath );
memo1.lines.add( 'TableName = ' + Trace_File_DBF.TableName );
Trace_File_DBF.TableLevel := Longint(TXBaseConst);
if not FileExists( filename_Trace_File_DBF ) then
begin
With Trace_File_DBF do
begin
TableLevel := Longint(TXBaseConst);
FilePath := ExtractFilePath(S);
with Trace_File_DBF.FieldDefs do
begin
memo1.lines.add( 'Starting to add fields with .FieldDefs' );
// Trace_File_DBF.FilePathFull := ????????
with Trace_File_DBF.FieldDefs do
begin
Add( 'game_count', ftinteger, 0, True );
[... etc more Add fields here ]
end; // with
memo1.lines.add( 'finished adding fields.' );
end; // with
showmessage( 'Creating Table: Trace File.' );
Trace_File_DBF.CreateTable;
memo1.lines.add( '2.closing trace file.' );
Trace_File_DBF.Close;
end; // with
end; // then
memo1.lines.add( 'Opening Trace File.' );
Trace_File_DBF.Exclusive := true;
Trace_File_DBF.Open;
Trace_File_DBF_open := true;
memo1.lines.add( 'FindLast record.' );
Trace_File_DBF.FindLast;
end; // try
except
memo1.lines.add( 'Exception opening trace file.' );
end;
end; { open_trace_file }
--
Proudly developing Quality Cross Platform Open Source Games
Since 1970 with a Commodore PET 4016 with 16 KRAM
http://pews-freeware-games.org (<--- brand new)
More information about the Lazarus
mailing list