diff --git a/exec/load/recordfile.js b/exec/load/recordfile.js index 8aedce5e51d8cbc633011f5beaeaea04ac6b43f3..34e54d275a9b5ea595f76483a52a4f6ec2ee0b93 100644 --- a/exec/load/recordfile.js +++ b/exec/load/recordfile.js @@ -4,7 +4,7 @@ function GetRecordLength(RecordDef) var len=0; function GetTypeLength(fieldtype) { - switch(RecordDef[i].fieldtype) { + switch(fieldtype) { case "SignedInteger": case "Integer": return(4); @@ -87,21 +87,33 @@ function RecordFile_ReadField(fieldtype) } } -function RecordFile_WriteField(val, fieldtype) +function RecordFile_WriteField(val, fieldtype, def) { var i; var m=fieldtype.match(/^Array:([0-9]+):(.*)$/); if(m!=null) { var ret=new Array(); - for(i=0; i<parseInt(m[1]); i++) - this.WriteField(val[i], m[2]); + for(i=0; i<parseInt(m[1]); i++) { + this.WriteField(val[i], m[2], def[i]); + } return(ret); } else { + if(val==undefined) + val=def; switch(fieldtype) { case "SignedInteger": + if(val < -2147483648) + val = -2147483648; + if(val > 2147483647) + val = 2147483647; + this.file.writeBin(val,4); case "Integer": + if(val<0) + val=0; + if(val>4294967295) + val=4294967295; this.file.writeBin(val,4); break; case "Date": @@ -177,19 +189,25 @@ function RecordFile_New() function RecordFileRecord_ReInit() { + var i; + for(i=0; i<this.parent.fields.length; i++) this[this.parent.fields[i].prop]=eval(this.parent.fields[i].def.toSource); } function RecordFileRecord_Put() { - this.parent.file.position=(this.Record)*this.parent.RecordLength; + var i; + + this.parent.file.position=this.Record * this.parent.RecordLength; for(i=0; i<this.parent.fields.length; i++) - this.parent.WriteField(this[this.parent.fields[i].prop], this.parent.fields[i].type); + this.parent.WriteField(this[this.parent.fields[i].prop], this.parent.fields[i].type, this.parent.fields[i].def); } function RecordFileRecord_ReLoad(num) { + var i; + this.parent.file.position=(this.Record)*this.parent.RecordLength; for(i=0; i<this.parent.fields.length; i++) this[this.parent.fields[i].prop]=this.parent.ReadField(this.parent.fields[i].type);