code: def __record(self):
          
          f = self.__getFileObj(self.dbf)
          recFmt = self.__recordFmt()
          recordContents = unpack(recFmt[0], f.read(recFmt[1]))
          if recordContents[0] != b(' '):
              # deleted record
              return None
          record = []
          for (name, typ, size, deci), value in zip(self.fields,
                                                                                                  recordContents):
              if name == 'DeletionFlag':
                  continue
              elif not value.strip():
                  record.append(value)
                  continue
              elif typ == "N":
                  value = value.replace(b('\0'), b('')).strip()
                  if value == b(''):
                      value = 0
                  elif deci:
                      try:
                          value = float(value)
                      except ValueError:
                          value = 0
                  else:
                      value = int(value)
              elif typ == b('D'):
                  try:
                      y, m, d = int(value[:4]), int(value[4:6]), int(value[6:8])
                      value = [y, m, d]
                  except:
                      value = value.strip()
              elif typ == b('L'):
                  value = (value in b('YyTt') and b('T')) or \
                                          (value in b('NnFf') and b('F')) or b('?')
              else:
                  value = u(value)
                  value = value.strip()
              record.append(value)
          return record
docs: Reads and returns a dbf record row as a list of values.