hab die zeile gefunden:
Delphi-Quellcode:
function TSensorFactory.GetNewSpeedForAFan(AFan: TFanOverlayObject):Integer;
var
i: Integer;
TempSens, MasterTemp: TTempOverlayObject;
NewSpeed, currentspeed: Integer;
HighestSpeed: Integer;
begin
Result:= -1;
HighestSpeed:= -1;
Currentspeed:= AFan.NewSpeed;
if AFan.Enabled then begin
// Alle sensoren werden durchgesteppt
for i:= 0 to FTempOvList.Count-1 do begin
TempSens:= FTempOvList[i] as TTempOverlayObject ;
//Wenn der Sensor aktiv ist wird geschaut ob dieser Fan überhaupt für diesen sonsor verantwortlich ist
If TempSens.Enabled then begin
NewSpeed:= CalculateNewSpeed(Tempsens, Afan);
if newSpeed > HighestSpeed then begin
HighestSpeed:= NewSpeed;
MasterTemp:= TempSens;
end;
end;
end;
//über oder unter der hysterese else in der hysterese
if (MasterTemp.Temp >= (MasterTemp.OldTemp + MasterTemp.Offset) ) or
(MasterTemp.Temp <= (MasterTemp.OldTemp - MasterTemp.Offset)) or
(HighestSpeed = 100) then begin
// MasterTemp.OldTemp:= MasterTemp.Temp; <--- wennn ich diese zeile auskomentiere dann geht es :-/
Result:= HighestSpeed;
end else
Result:= currentspeed;
ich versteh nur nicht was ihn daran stört :-/
edit:
Noch die Passende klasse dazu:
Delphi-Quellcode:
TTempOverlayObject = Class(Tobject)
public
TempArrayPos: Integer; //Position im Rückgabearray
RealName : String; //Namen im System
overlayName: String; //Anzeigenamen
LowestTemp: integer; //Konfigurierte min Temp
HighestTemp: integer; //Konfigurierte höchsttemperatur
Temp: Integer; //Aktuelle Temperatur
OldTemp:Integer; //Letzte Temperatur vor der Temp änderung (für hysterese wichtig)
Offset: integer; //Offset für die Hysterese
Enabled: Boolean; //Aktiv/Inaktiv
IdleTemp: Integer;
LoadTemp: Integer;
ResponsibleFans: TObjectlist; // Fans die Zuständig sind für diesen Sensor.
constructor create;
destructor destroy(); override;
End;