Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi JclSysInfo defekt !!! (https://www.delphipraxis.net/18925-jclsysinfo-defekt.html)

HomerGER 26. Mär 2004 00:10


JclSysInfo defekt !!!
 
Hallo liebe Lieben
Einigen function in der JclSysInfo scheinen nicht mit den neuen Intel Prozessoren UND WIN XP zurecht zukommen
speziell die Functionen GetCPUSpeed usw
sollte man diese Functionen benutzen kommt es zu den fehler "Gleitkommadivision durch Null"
und das einigene programm will ein fehlerbericht nach MS senden
oder es startet es garnicht und will gleich senden - böse böse
abhilfe - JCL KOMPLETT zu löschen - es nützt nix es nur aus der uses raus zu nehmen
der fehler wurde in den newsgroups schon gepostet - leider antworten die jungs nicht und patchen die ganze unit

NicoDE 26. Mär 2004 04:51

Re: JclSysInfo defekt !!!
 
Zitat:

Zitat von HomerGER
abhilfe - JCL KOMPLETT zu löschen - es nützt nix es nur aus der uses raus zu nehmen der fehler wurde in den newsgroups schon gepostet - leider antworten die jungs nicht und patchen die ganze unit

Bescheidene Frage, was hindert jemanden daran es selbst zu beheben?
(schliesslich ist der Quelltext vorhanden...)

Robert Marquardt 26. Mär 2004 05:29

Re: JclSysInfo defekt !!!
 
Wir haben einfach nicht die Manpower die JVCL 2.1 weiterzupflegen.
Wie NicoDE sagt bereitet es kein Problem die Implementation aus der JVCL 3 in die JVCL 2.1 zu uebertragen.

Das hier ist Open Source kein kommerzielles Produkt wo wir jedem in den Arsch kriechen muessen.
Ein bischen Eigeninitiative ist gefragt.

Ich entschuldige mich fuer die obigen unflaetigen Worte, aber die Frage kommt schon ziemlich impertinent rueber.

HomerGER 26. Mär 2004 08:32

Re: JclSysInfo defekt !!!
 
ja ok - womöglich hab ich es falsch gesagt - ich habe leider auch nicht die manpower es zu beheben
nur wie ich es gesehen habe ist das problem schon sehr lange bekannt, also es gibt schon deswegen anfragen in der newsgroup vom letzten jahr, und auch da wurde nicht geantwortet.
es geht auch nicht um das machen , sondern um das sagen das es so ein bug gibt. denn ich bin damit voll gegen die wand gelaufen.
was nützen mir denn solche functionen, wenn sie fehlerhaft sind , es bekannt ist und man noch nichtmal informiert wird ???? - Bin ich hier bei MS?
Und das mit den KOMPLETT LÖSCHEN - leider ging nur so der fehler weg

ps in den arsch kriechen tut auch sehr weh - aber womöglich ein info in der newsgroup oder auf der hp, das ist nicht so schmerzhaft

shmia 26. Mär 2004 10:35

Re: JclSysInfo defekt !!!
 
Hier Die Funktion GetCPUSpeed aus der JCL 1.90B2;
da wurde der Bug gefixed.
Einfach per copy&Paste in die JclSysInfo der Version 1.22 einpflanzen.
Der Bugfix wurde übrigens in der Newsgroup Jedi.jcl (server forums.talkto.net)
schon vor längerer Zeit diskutiert.
Die JCL steht qualitativ auf einem sehr hohem Level; falls doch mal
ein Bug auftritt ist das kein Grund gleich die Flinte ins Korn zu werfen !

Delphi-Quellcode:
function GetCPUSpeed(var CpuSpeed: TFreqInfo): Boolean;
{$IFDEF LINUX}
begin
  Result := False;
end;
{$ENDIF LINUX}
{$IFDEF MSWINDOWS}
var
  T0, T1: Int64;
  CountFreq: Int64;
  Freq, Freq2, Freq3, Total: Int64;
  TotalCycles, Cycles: Int64;
  Stamp0, Stamp1: Int64;
  TotalTicks, Ticks: Double;
  Tries, Priority: Integer;
  Thread: THandle;
begin
  Stamp0 := 0;
  Stamp1 := 0;
  Freq := 0;
  Freq2 := 0;
  Freq3 := 0;
  Tries := 0;
  TotalCycles := 0;
  TotalTicks := 0;
  Total := 0;

  Thread := GetCurrentThread();
  Result := QueryPerformanceFrequency(CountFreq);
  if Result then
  begin
    while ((Tries < 3 ) or ((Tries < 20) and ((Abs(3 * Freq - Total) > 3) or
      (Abs(3 * Freq2 - Total) > 3) or (Abs(3 * Freq3 - Total) > 3)))) do
    begin
      Inc(Tries);
      Freq3 := Freq2;
      Freq2 := Freq;
      QueryPerformanceCounter(T0);
      T1 := T0;

      Priority := GetThreadPriority(Thread);
      if Priority <> THREAD_PRIORITY_ERROR_RETURN then
        SetThreadPriority(Thread, THREAD_PRIORITY_TIME_CRITICAL);
      try
        while T1 - T0 < 50 do
        begin
          QueryPerformanceCounter(T1);
          Stamp0 := ReadTimeStampCounter;
        end;
        T0 := T1;

        while T1 - T0 < 1000 do
        begin
          QueryPerformanceCounter(T1);
          Stamp1 := ReadTimeStampCounter;
        end;
      finally
        if Priority <> THREAD_PRIORITY_ERROR_RETURN then
          SetThreadPriority(Thread, Priority);
      end;

      Cycles := Stamp1 - Stamp0;
      Ticks := T1 - T0;
      Ticks := Ticks * 100000;

      // avoid division by zero
      if CountFreq = 0 then
        Ticks := High(Int64)
      else
        Ticks := Ticks / (CountFreq / 10);

      TotalTicks := TotalTicks + Ticks;
      TotalCycles := TotalCycles + Cycles;

      // avoid division by zero
      if Ticks = 0 then
        Freq := High(Freq)
      else
        Freq := Round(Cycles / Ticks);

      Total := Freq + Freq2 + Freq3;
    end;

    // avoid division by zero
    if TotalTicks = 0 then
    begin
      Freq3 := High(Freq3);
      Freq2 := High(Freq2);
      CpuSpeed.RawFreq := High(CpuSpeed.RawFreq);
    end
    else
    begin
      Freq3 := Round((TotalCycles *  10) / TotalTicks); // freq. in multiples of 10^5 Hz
      Freq2 := Round((TotalCycles * 100) / TotalTicks); // freq. in multiples of 10^4 Hz
      CpuSpeed.RawFreq := Round(TotalCycles / TotalTicks);
    end;

    CpuSpeed.NormFreq := CpuSpeed.RawFreq;

    if Freq2 - (Freq3 * 10) >= 6 then
      Inc(Freq3);


    Freq := CpuSpeed.RawFreq * 10;
    if (Freq3 - Freq) >= 6 then
      Inc(CpuSpeed.NormFreq);

    CpuSpeed.ExTicks := Round(TotalTicks);
    CpuSpeed.InCycles := TotalCycles;

    CpuSpeed.NormFreq := RoundFrequency(CpuSpeed.NormFreq);
    Result := True;
  end;
end;
{$ENDIF MSWINDOWS}

HomerGER 26. Mär 2004 22:01

Re: JclSysInfo defekt !!!
 
leider hab ich in der newsgroup nix gefunden und auf meine post in der newsgroup haben mich 2 user angemail, sie hätten das gleiche problem und auch keine lösung
hatte mir erst vor kurzen die jcl+jvcl210 fullinstall runtergeladen - und da ist der bug noch drin

ps aber thx für den fix

jbg 26. Mär 2004 22:10

Re: JclSysInfo defekt !!!
 
jcl+jvcl210 ist auch schon recht alt. Und die JVCL 3 steht kurz vor einem Release und benötigt (mindestens) die JCL 1.9.

Zitat:

mit den neuen Intel Prozessoren UND WIN XP
Mit XP hat das nichts zu tun. Mit den Prozessoren über 1.5 GHz aber um so mehr.

HomerGER 27. Mär 2004 18:47

Re: JclSysInfo defekt !!!
 
Zitat:

Zitat von jbg
Mit XP hat das nichts zu tun. Mit den Prozessoren über 1.5 GHz aber um so mehr.

hmm
hier ne mail die einer geschickt hat
Zitat:

I meet the same problem with P4 2.8 Ghz under Windows XP
Call to QueryPerformanceFrequency returns 0 causing "divide by zero"
trap. The same application using JCL with processor P4 2.8 Ghz under
Windows 2000 works fine.
ich hatte das z.b nur mit den neuen Intel HT, und wie gesagt nur auf xp getestet

ich hab das aber (glaube ich :roll: ) alles in der newsgroup gepostet

jbg 27. Mär 2004 23:19

Re: JclSysInfo defekt !!!
 
Zitat:

Zitat von HomerGER
T
Zitat:

he same application using JCL with processor P4 2.8 Ghz under
Windows 2000 works fine.

Dann war wohl unter Win2k mehr am Laufen, das die Rechenleistung heruntergeschraubt hat, denn auf meinen 3 GHz HT krachte die alte JclSysInfo Unit auch unter Win2k.

HomerGER 27. Mär 2004 23:22

Re: JclSysInfo defekt !!!
 
thx für die info
fühle mich jetzt nicht mehr so alleingelassen :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz