Exemple #1
0
 public static DbfSubrecord read(Binary stream)
 {
     // Console.WriteLine("-Subrecord");
     byte nameFirstByte = stream.readByte();
     if (nameFirstByte == 0x0D)
     {
         return null;
     }
     else
     {
         DbfSubrecord sr = new DbfSubrecord();
         sr.nameBytes[0] = nameFirstByte;
         for (int i = 1; i < sr.nameBytes.Length; i++)
         {
             sr.nameBytes[i] = stream.readByte();
         }
         sr.name = Encoder.fromBytes(sr.nameBytes);
         if (sr.name[sr.name.Length - 1] == '\0')
         {
             sr.name = sr.name.Substring(0, sr.name.Length - 1);
         }
         sr.type = stream.readByte();
         sr.offsetInRecord = stream.readInt4();
         sr.size = stream.readByte();
         sr.decimals = stream.readByte();
         sr.flags = stream.readByte();
         sr.autoincNextValue = stream.readInt4();
         sr.autoincStep = stream.readByte();
         stream.Read(sr.reservedArea, 0, sr.reservedArea.Length);
         sr.utf8Size = (sr.type == (byte)'C') ? sr.size * 2 : sr.size;
         return sr;
     }
 }
Exemple #2
0
 public DbfFileHeader(Binary stream)
 {
     typeSignature = stream.readByte();
     lastUpdateYear = stream.readByte();
     lastUpdateMonth = stream.readByte();
     lastUpdateDay = stream.readByte();
     recordCount = stream.readInt4();
     dataAreaOffset = stream.readInt2();
     recordSize = stream.readInt2();
     stream.Read(reservedArea1, 0, reservedArea1.Length);
     flags = stream.readByte();
     codepage = stream.readByte();
     stream.Read(reservedArea2, 0, reservedArea2.Length);
     DbfSubrecord subrecord = DbfSubrecord.read(stream);
     while (subrecord != null)
     {
         subrecords.Add(subrecord);
         subrecord = DbfSubrecord.read(stream);
     }
 }