das vermute ich auch aber ich weiss nicht wo suchen. Ich versuche es noch einmal zu erklären
Ich hab mir ne Watch gemacht auf TVoltOverlayObject(FVoltOVList[1]) diese Watch habe ich beobachtet beim Debuggen. diese watch ist okey bis zum step ( 1. zu 2. komentare) und das wenn i = 8 ist.
Also in dem moment wo er einen durchlauf beendet hat und wieder hochspringt zur bedingung gehen meine Objekte flöten. wieso auch immer und ich wüsste nicht was mir da genau einen strich durch die rechnung macht.
Hast du eine ahnung was in dieser zeit noch passiert?
Delphi-Quellcode:
var
TempObject: TTempOverlayObject;
FanObject: TFanOverlayObject;
VoltObject: TVoltOverlayObject;
i: Integer;
ResultRecord: TResultIntRecord;
MyTobject: TObject;
begin
Result:= GPReadSpeedFan.ReadSFData;
ResultRecord:= GPReadSpeedFan.GetResultRecord;
For i:= 0 to FTempOvList.Count -1 do begin
TempObject:= FTempOvList[i] as TTempOverlayObject;
TempObject.Temp:= ResultRecord.Temps[TempObject.TempArrayPos] div 100;
If TempObject.IdleTemp > TempObject.Temp then
TempObject.IdleTemp:= TempObject.Temp
else If TempObject.LoadTemp < TempObject.Temp then
TempObject.LoadTemp:= TempObject.Temp;
end;
For i:= 0 to FFanOvList.Count -1 do begin// <---------2. objekte sind flöten und i = 9
FanObject:= FFanOvList[i] as TFanOverlayObject;
FanObject.RPM:= ResultRecord.fans[FanObject.RPMArrayPos];
FanObject.NewSpeed := GetNewSpeedForAFan(FanObject);
If FanObject.IdleRPM > FanObject.RPM then
FanObject.IdleRPM:= FanObject.RPM
else If FanObject.LoadRPM < FanObject.RPM then
FanObject.LoadRPM:= FanObject.RPM;
end; // <------------ 1. hier stand i= 8 und meine objekte in der liste weiter unten sind noch richtig. anschliessend wieder einen step im debuger
for i := 0 to FVoltOvList.Count - 1 do begin
MyTobject:= FVoltOVList[i];
if FVoltOvList[i] is TVoltOverlayObject then
VoltObject:= FVoltOvList[i] as TVoltOverlayObject ;
VoltObject.Voltage:= ResultRecord.Volts[VoltObject.VoltArrayPos]/100 ; //FormatFloat('###0.0##',ResultRecord.Volts[VoltObject.VoltArrayPos]/100)
If VoltObject.IdleVolt > VoltObject.Voltage then
VoltObject.IdleVolt:= VoltObject.Voltage
else If VoltObject.LoadVolt < VoltObject.Voltage then
VoltObject.LoadVolt:= VoltObject.Voltage;
end;