Revision 3217
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