Hi All,

I really need to know what is the Dbase3/4 unit for Lazarus/Free Pascal
and where is the sample project for manipulating them. I found it
somewhere on the lazarus website but don't know where. I hope that it is
okay for me to post some of my code which uses the XBase1 unit in Delphi
5 Enterprise which I am porting to my Hexxpawn8 game (which is cross
platform open source).

I use Dbase3/4+ files to store board patterns for my game which is sort
of a cross between the pawns in Chess and checkers, using AI logic
against the computer. (I chose Dbase format because it was the single
most common database file format at the time.)

What is the replacement unit for XBase1 for using Dbase3/4 files, and
the functions/procedures etc to replace these calls to XBase1 ?

How do I do the following:

// declaring a Dbase file -- TXBase (what is the equivalent in Lazarus?)
// how do I copy a blank.dfg file to hex8.bdf (Copyfile) ???
// I need to Goto to the Bottom of File (HexxData.GotoBOF;)
// I need to call a function GetFieldByName passing a string as the
field name and comparing it with a character
// I need to Goto the Next record (HexxData.GotoNext;)
// I need to Get the Record # (HexxData.RecNo;)
// and test the Dbase.EOF (not HexxData.EOF)
// and Append a Blank record (HexxData.AppendBlank;)
// save an integer to a Field (HexxData.UpdFieldStr('this_game',
inttostr(pattern.this_game)); )
// and Goto to the Record number (HexxData.GotoRecord(hexxdata_rec_no);)

See examples of my code below

Unit hexboard2.pas

// declaring a Dbase file -- TXBase
var
  HexxData, TraceFile: TXBase;

procedure Thxboard.Open_db;
begin
  if not fileExists('hex8.dbf') then
    CopyFile('blank.dbf', 'hex8.dbf', false);
// how do I copy a blank.dfg file to hex8.bdf ???

  HexxData := TXBase.create(nil);
// I assume that this is how to create a replacement for a Dbase file
  HexxData.FileName := 'hex8.dbf';
  HexxData.Active := true;
  HexxData.GotoBOF;
// I need to Goto to the Bottom of File
end; { Open_db }

function Thxboard.pattern_is_db_current(pattern1: pattern_type):
boolean;
var
  str_x, str_o: array[1..8] of string;
begin
  pattern_is_db_current := false;
  str(pattern1.x_piece[1], str_x[1]);
 // ..
  if (HexxData.GetFieldByName('x1_pos') = str_x[1]) and

// I need to call a function GetFieldByName passing a string as the
field name and comparing it with a character

//..
    (HexxData.GetFieldByName('x8_pos') = str_x[8]) then
    if (HexxData.GetFieldByName('o1_pos') = str_o[1]) and
//..
      (HexxData.GetFieldByName('o8_pos') = str_o[8]) then
      pattern_is_db_current := true;
end; { pattern_is_db_current }
{---------------------------------------------------------}

procedure Thxboard.Find_pattern(var pattern1: pattern_type;
  var found: boolean);
begin
//,,
        HexxData.GotoNext;

// I need to Goto the Next record

end; { Find_pattern }
{---------------------------------------------------------}

procedure Thxboard.write_updated_pattern(var pattern1: pattern_type);
var
  found: boolean;
begin
  found := false;
  if pattern_is_db_current(pattern1) then
    { save pattern options to db }
    begin
      save_options(pattern1);

      hexxdata_rec_no := HexxData.RecNo;
// I need to Get the Record #
      close_db;
      if trace_moves then
//..
      open_db;
      HexxData.GotoRecord(hexxdata_rec_no);
// then I need to Goto to record #
    end
  else
  { save entire pattern to db };
  begin
    while (not HexxData.EOF) and not found do

// and test the Dbase.EOF (end of file)
      begin
//..
      end;
    if not found then
      begin
      { --- add a new record --- }
        HexxData.AppendBlank;

// and Append a Blank record

        save_options(pattern1);
        HexxData.UpdFieldStr('this_game', inttostr(pattern.this_game));

// save an integer to a Field 

//..
        hexxdata_rec_no := HexxData.RecNo;
        close_db;
        if trace_moves then
//..          
        open_db;
        HexxData.GotoRecord(hexxdata_rec_no);
// and Goto to the Record number
      end; // if found
  end; // else
end; { write_updated_pattern  }
{---------------------------------------------------------}
-- 
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)


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to