Einzelnen Beitrag anzeigen

gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#7

AW: TObjectList problem...

  Alt 23. Dez 2010, 11:48
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;
  Mit Zitat antworten Zitat