| xHarbour Reference Documentation > Class Reference (textmode) | 
![]()  | 
  ![]()  | 
  ![]()  | 
 
Abstract base class for user-defined persistent object.
The HBPersistent() class is an abstract class for the creation of persistent objects. When user-defined classes should become persistent, they must inherit from HBPersistent() which provides methods for converting an object to/from a binary string and/or file on disk.
All instance variables declared with the PERSISTENT attribute are preserved and re-assigned when a persistent object is converted to a binary string and back to the Object data type.
Note: if code blocks are stored in instance variables of a persistent object, the same restrictions apply as outlined with function HB_Serialize().
| See also: | CLASS, DATA, HB_Serialize() | 
| Category: | Object functions , xHarbour extensions | 
| Source: | rtl\persist.prg | 
| LIB: | xhb.lib | 
| DLL: | xhbdll.dll | 
// The example demonstrates the steps required to make objects
// persistent. Only the instance variables with the PERSISTENT
// attribute are written to and restored from the file.
   #include "HbClass.ch"
   PROCEDURE Main
      LOCAL obj, cPersistent
      obj := test():new()
      obj:volatile := "Volatile"
      obj:show()
      obj:value := "Data from file"
      obj:saveToFile( "Persist.txt" )
      obj := NIL
      WAIT "obj is gone, press a key..."
      obj := Test():new()
      obj:loadFromFile( "Persist.txt" )
      obj:show()
      ? "Elapsed:",  Seconds()-obj:secs
   RETURN
   CLASS Test FROM HBPersistent
      DATA value    INIT "Test persistent Object"  PERSISTENT
      DATA date     INIT Date()                    PERSISTENT
      DATA time     INIT Time()                    PERSISTENT
      DATA secs     INIT Seconds()                 PERSISTENT
      DATA volatile
      METHOD show
   ENDCLASS
   METHOD Show
      ? ::value
      ? "Creation Date:", ::date
      ? "Creation Time:", ::time
      ? "    Timestamp:", ::secs
      ? "Volatile data:", ::volatile
   RETURN
http://www.xHarbour.com