Revision 3217

View differences:

trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/dbf/DbaseFileHeader.java
374 374

  
375 375
        // read all of the header records
376 376
        myFieldDescriptions = new DbaseFieldDescriptor[myNumFields];
377
        int fieldOffset = 0;
377 378

  
378 379
        for (int i = 0; i < myNumFields; i++) {
379 380
            myFieldDescriptions[i] = new DbaseFieldDescriptor();
......
401 402
            // read the field decimal count in bytes
402 403
            myFieldDescriptions[i].myDecimalCount = (int) in.get();
403 404

  
405
            // NUEVO: Calculamos los offsets aqu? para no
406
            // tener que recalcular cada vez que nos piden
407
            // algo.            
408
            myFieldDescriptions[i].myFieldDataAddress = fieldOffset;
409
            fieldOffset += tempLength;
410
            // Fin NUEVO
404 411
            // read the reserved bytes.
405 412
            in.position(in.position() + 14);
406 413
        }
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/drivers/dbf/DbaseFile.java
86 86
            myHeader.getHeaderLength() + 1;
87 87

  
88 88
        //Se calcula el offset del campo
89
        int fieldOffset = 0;
89
        /* int fieldOffset = 0;
90 90

  
91 91
        for (int i = 0; i < fieldId; i++) {
92 92
            fieldOffset += myHeader.getFieldLength(i);
93
        }
93
        } */
94
        int fieldOffset = myHeader.getFieldDescription(fieldId).myFieldDataAddress;
94 95

  
96
        /* System.err.println("getStringFieldValue: rowIndex = " + rowIndex);
97
        System.err.println("recordOffset = " + recordOffset + " fieldOffset=" + fieldOffset); */
95 98
        buffer.position(recordOffset + fieldOffset);
96 99

  
97 100
        byte[] data = new byte[myHeader.getFieldLength(fieldId)];

Also available in: Unified diff