これがないと実機ではエラーがでる
FileMode := fmOpenRead ;
procedure THistoricalList.saveBinary(aFileName: String);
var
i: integer;
F: file of TOHLCRecord;
tmpOHLCRecord: TOHLCRecord;
begin
AssignFile(F, aFileName);
ReWrite(F);
// ファイルのヘッダー情報を open に書き込む
tmpOHLCRecord.high := 0;
tmpOHLCRecord.low := 0;
tmpOHLCRecord.close := 0;
// 0 THIS_PROGRAM_VERSION
tmpOHLCRecord.open := THIS_PROGRAM_VERSION;
Write(F, tmpOHLCRecord);
// 1 Pair
tmpOHLCRecord.open := Self.Pair.serial;
Write(F, tmpOHLCRecord);
// 2 timeStep
tmpOHLCRecord.open := timeStep.serial;
Write(F, tmpOHLCRecord);
// 3 IsConsecutiveData
tmpOHLCRecord.open := StrToInt(BoolToStr(Self.IsConsecutiveData));
Write(F, tmpOHLCRecord);
// 4 Count
tmpOHLCRecord.open := Self.Count;
Write(F, tmpOHLCRecord);
for i := 5 to BINARYHEADER_COUNT - 1 do
begin
tmpOHLCRecord.open := -1;
Write(F, tmpOHLCRecord);
end;
for i := 0 to self.Count - 1 do
begin
tmpOHLCRecord.IDateTimeValue := self.Items[i].IDateTime.Value;
tmpOHLCRecord.open := self.Items[i].PipOpen;
tmpOHLCRecord.high := self.Items[i].PipHigh;
tmpOHLCRecord.low := self.Items[i].PipLow;
tmpOHLCRecord.close := self.Items[i].PipClose;
Write(F, tmpOHLCRecord);
end;
CloseFile(F);
end;
procedure THistoricalList.loadBinary(aFileName: String);
var
i: integer;
F: file of TOHLCRecord;
tmpOHLCRecord: TOHLCRecord;
counter: Integer;
tmpRecord: THistoricalRecord;
tmpStartDateTimeValue: Integer;
tmpEndDateTimeValue: Integer;
tmpIsConsecutiveData: Boolean;
tmpCounter: Integer;
begin
AssignFile(F, aFileName);
FileMode := fmOpenRead ; //
Reset(F);
// if tmpFlag then ShowMessage('Exists') else ShowMessage('NOT Exists');
// 0 THIS_PROGRAM_VERSION
Read(F, tmpOHLCRecord);
// 1 Pair
Read(F, tmpOHLCRecord);
Self.pair.serial := tmpOHLCRecord.open;
// 2 timeStep
Read(F, tmpOHLCRecord);
Self.TimeStep.serial := tmpOHLCRecord.open;
// 3 IsConsecutiveData
Read(F, tmpOHLCRecord);
tmpIsConsecutiveData := StrToBool(IntToStr(tmpOHLCRecord.open));
// 4 Count
Read(F, tmpOHLCRecord);
tmpCounter := tmpOHLCRecord.open;
// 空読み
for i := 5 to BINARYHEADER_COUNT - 1 do
Read(F, tmpOHLCRecord);
SetLength(Self.Items, tmpCounter);
for i := 0 to tmpCounter - 1 do
begin
Read(F, tmpOHLCRecord);
tmpRecord.IDateTime.Value := tmpOHLCRecord.IDateTimeValue;
tmpRecord.PipOpen := tmpOHLCRecord.open;
tmpRecord.PipHigh := tmpOHLCRecord.high;
tmpRecord.PipLow := tmpOHLCRecord.low;
tmpRecord.PipClose := tmpOHLCRecord.close;
Self.Items[i].Assign(tmpRecord);
end;
CloseFile(F);
end;