Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.054 Beiträge
 
Delphi 12 Athens
 
#2

Re: NetworkTrafficMonitor BUG

  Alt 19. Jul 2009, 04:05
NetworkTrafficMonitor?

wer wie was wo ... ?


In der DP kann ich keinen Hier im Forum suchenNetworkTrafficMonitor finden
und Google findet mir zuviele Bei Google suchenNetworkTrafficMonitor's.

Aber falls du den da meinst http://delphi.about.com/od/fullcodep.../aa112903a.htm
der Quellcode ist ja vorhanden und man könnte auch selber mal nachsehn .... allerdings find ich den Wert von 1000 eigenartig ... wenn dann würde ich eher mir Werten wie 2 GB bzw. 4 GB rechnen > Integerüberlauf

[add]
Problem gefunden ... war gleich eine der ersten Funktionen, welche man in TrafficUnit.pas
sieht
Delphi-Quellcode:
function BytesToFriendlyString(Value : DWord) : string;
const
  OneKB = 1000;
  OneMB = OneKB * 1000;
  OneGB = OneMB * 1000;
begin
  if Value < OneKB then
    Result := FormatFloat('#,##0.00 bps',Value)
  else
    if Value < OneMB then
      Result := FormatFloat('#,##0.00 Kbps', Value / OneKB)
    else
      if Value < OneGB then
        Result := FormatFloat('#,##0.00 Mbps', Value / OneMB)
end; (*BytesToFriendlyString*)
selbes in der Funktion BitsToFriendlyString

Wenn man da einfach das if Value < OneGB then entfernt und nur ein ELSE rum letzen "String" zurückläßt, dann würde es wieder gehen ... allerdings gibt es dann immernoch, dank DWord, nach 4 GB einen überlauf und man sollte das ganze Programm besser von DWord auf Int64 umstellen.

[add2]
Im Anhang die komplette Unit, mit geänderten IF-Abfragen und auf Int64 umgestellt.
Ich hoff mal die paar Änderungen reichen aus (einfach nach {himitsu} suchen).
Das ganze Programm müßte nun nur noch neu kompiliert werden,
nur bloß nicht mit D2009, dann da läuft es nicht (da z.B. Get_IfTableMIB nur Schrott liefert)

[add3]
so, ist wirklich nicht unicodetauglich, der Code ... in D2006 ging es

hab aber noch derartig grausame DIV-0-Behandlungen ersetzt
Delphi-Quellcode:
try
  self.FAverageInPerSec := InTotal div ActiveCountIn
except
  self.FAverageInPerSec := 0
end;
Angehängte Dateien
Dateityp: pas trafficunit_221.pas (8,0 KB, 60x aufgerufen)
Dateityp: 7z net_traff_mon_360.7z (210,4 KB, 93x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat