home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SOURCE / CLASSES / FILE.PRG < prev    next >
Text File  |  1994-05-30  |  2KB  |  66 lines

  1.  
  2. #include "Objects.ch"
  3.  
  4.  
  5. CLASS TFile
  6.  
  7.    PROTECT DATA cName   AS CHARACTER
  8.    HIDE    DATA cStruct AS CHARACTER
  9.  
  10.    MESSAGE New( cFileName )      EXTERN TFNew
  11.    MESSAGE Open( nOpenMode )     EXTERN TFOpen
  12.    MESSAGE Create( nCreateMode ) EXTERN TFCreate
  13.    MESSAGE Close()               EXTERN TFClose
  14.    MESSAGE GoTop()               EXTERN TFGoTop
  15.    MESSAGE RecNo()               EXTERN TFRecNo
  16.    MESSAGE GoBottom()            EXTERN TFGoBottom
  17.    MESSAGE Skip( nRecords )      EXTERN TFSkip
  18.    MESSAGE ReadLN()              EXTERN TFReadLN
  19.    MESSAGE LastRec()             EXTERN TFLastRec
  20.    MESSAGE lEof()                EXTERN TFlEof
  21.    MESSAGE lBof()                EXTERN TFlBof
  22.    MESSAGE GoTo( nRecord )       EXTERN TFGoTo
  23.    MESSAGE WriteLN( cRecord, lInsert ) EXTERN TFWriteLN
  24.    MESSAGE Append( nRecords )    EXTERN TFAppend
  25.    MESSAGE Delete( nRecords )    EXTERN TFDelete
  26.    MESSAGE Insert( nRecords )    EXTERN TFInsert
  27.  
  28.    METHOD Seek( cText )
  29.  
  30.    __TFInit()
  31.  
  32. ENDCLASS
  33.  
  34. //---------------------------------------------------------------------------//
  35.                     // First Line OffSet
  36. METHOD Seek( cText, nOffSet )  // -> Si lo encuentra Cambia Registro y devuelve offset del registro nuevo
  37.  
  38.     local nRec      := ::RecNo()
  39.     local cLine
  40.     local nAt       := 0
  41.  
  42.     if ! empty( cText )
  43.  
  44.         DEFAULT nOffSet := 1
  45.  
  46.         cLine := ::ReadLN()
  47.  
  48.         nOffSet := max( 1, Min( Len( cLine ), nOffSet ) )
  49.  
  50.         cLine := substr( cLine, nOffSet, len( cLine ) - nOffSet + 1 )
  51.  
  52.         while ( nAt := AT( cText, cLine ) ) == 0 .and. !::lEof()
  53.             ::Skip( 1 )
  54.             cLine := ::ReadLN()
  55.         end
  56.  
  57.         if nAt == 0
  58.            ::GoTo( nRec )
  59.         endif
  60.  
  61.     endif
  62.  
  63. return nAt
  64.  
  65. //---------------------------------------------------------------------------//
  66.