Delphi-PRAXiS
Seite 2 von 3     12 3      

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 JCLCounter - High Performance Counter (https://www.delphipraxis.net/93991-jclcounter-high-performance-counter.html)

Robert Marquardt 14. Jun 2007 14:15

Re: JCLCounter - High Performance Counter
 
Das heisst mein Testprogramm gibt nichts aus.
Ruf doch mal den Installer der JCL auf und installiere einfach erneut. Vielleicht hilft das ja.
Der Installer hat auf jeden Fall kein Problem damit immer wieder aufgerufen zu werden.

creality 14. Jun 2007 14:18

Re: JCLCounter - High Performance Counter
 
@ Robert:

Jo dein Programm gibt nix aus. Die QueryPerformanceFrequency(Freq) ist nicht NULL und auch QueryPerformanceCounter(time) gibt ein INT64 zurück.

JCL hab ich bereits mehrfach installiert, deinstalliert und manuell installiert. immer das gleiche. furchtbar :stupid:

Bernhard Geyer 14. Jun 2007 14:27

Re: JCLCounter - High Performance Counter
 
Neueste Version? Evtl. haben ja ältere JCL-Versionen hier eine Wanze eingebaut?

Robert Marquardt 14. Jun 2007 14:33

Re: JCLCounter - High Performance Counter
 
Kopier doch mal JclCounter.pas, fuege es in dein Projekt ein, builde dein Programm und geh mit dem Debugger in den Konstruktor und schaue nach was dort passiert.

MagicAndre1981 14. Jun 2007 16:00

Re: JCLCounter - High Performance Counter
 
An dem Update für Windows liegt es nicht, bei mir geht alles. Mach dein Windows mal platt.

Bernhard Geyer 14. Jun 2007 16:26

Re: JCLCounter - High Performance Counter
 
Zitat:

Zitat von MagicAndre1981
An dem Update für Windows liegt es nicht, bei mir geht alles. Mach dein Windows mal platt.

Und was sagst du dem Kunden wenn sowas dort auftritt? Das gleiche?
Wir sollten die Ursache schon finden. Windows-Update ändern teilweise Systemeinstellung (wurde bei mir für die Internetzone "Trusted Sides" auch wieder gemacht und das auch nicht bei jedem Anwender.

creality 15. Jun 2007 06:58

Re: JCLCounter - High Performance Counter
 
Zusammenfassung bisheriger Ergebnisse

Funktioniert. Zeit kann gemessen werden ohne Probleme.

Delphi-Quellcode:
// Start
procedure HiPerfCounter.Start;
begin
     try
     QueryPerformanceFrequency(freq);
     QueryPerformanceCounter(time1);

     except
          on E:Exception do begin
             ShowMessage('HiPerfCounter reported an Error. QueryPerformanceCounter is not supported.');
          end;              
     end;
end;
Auszug aus dem JCL Counter:

Funktioniert nicht, obwohl hier genau das gleiche passiert: QueryPerformanceFrequency(FFrequency) liefert NULL zurück. WIESO?

Delphi-Quellcode:

constructor TJclCounter.Create(const Compensate: Boolean);
const
  Iterations: Integer = 10000;
var
  Count: Integer;
  TmpOverhead: Int64;
begin
  inherited Create;

  {$IFDEF MSWINDOWS}
  if not QueryPerformanceFrequency(FFrequency) then
    raise EJclCounterError.CreateRes(@RsNoCounter);
  {$ENDIF MSWINDOWS}
  {$IFDEF LINUX}
  FFrequency := 100000; // 1 sec = 10E6 microseconds, therefore we have to divide by 10E5
  {$ENDIF LINUX}

  FCounting := False;
  FOverhead := 0;
......................
..........

Robert Marquardt 15. Jun 2007 07:21

Re: JCLCounter - High Performance Counter
 
Mal den PEViewer der JCL uebersetzen und auf die EXEs ansetzen, aber eigentlich sollten genau die gleichen Funktionen eingelinkt werden.
Alternativ die JVCL und JCL deinstallieren und loeschen und dann wirkich alle Files aus dem Delphi-Verzeichnisbaum loeschen die mit Jcl oder Jv beginnen.
Danach die Festplatte absuchen ob nicht noch andere Files mit diesen Prefixen rumliegen. Moeglichst auch loeschen.
Nun JVL und JVCL von http://jvcl.sf.net/daily bzw. http://jcl.sf.net/daily besorgen und installieren.

creality 15. Jun 2007 07:41

Re: JCLCounter - High Performance Counter
 
@ Robert:

Ich habe soeben die JCLCounter.pas n bisschen editiert. Vor dem call: if not QueryPerformanceCounter(FStart) then
habe ich ne Testvariable eingefügt: Test : bool.

Und jetzt kommts: test := QueryPerformanceCounter(FStart); gibt NICHT null zurück und siehe da...der Counter geht wieder. Ich verstehs aber nicht. Nach dem entfernen der Var geths trotzdem. Ich vermute aber...das es nicht daran lag sondern an irgendwas anderem.

So kanns nicht weitergehen...ich werde mal deine Schrittliste abarbeiten und den ganzen Kram entfernen.


Delphi-Quellcode:
procedure TJclCounter.Start;
var
test : Boolean;
begin
  test := QueryPerformanceCounter(FStart);
  FCounting := True;
  FElapsedTime := 0;
  FOverallElapsedTime := 0;
  {$IFDEF MSWINDOWS}
  if not QueryPerformanceCounter(FStart) then
    raise EJclCounterError.CreateRes(@RsNoCounter);
  {$ENDIF MSWINDOWS}
  {$IFDEF LINUX}
  GetTimeOfDay(FTimeval, nil);
  FStart := FTimeval.tv_sec * 100000 + (FTimeval.tv_usec);
  {$ENDIF LINUX}
end;

cryo123 26. Jun 2007 09:12

Re: JCLCounter - High Performance Counter
 
I think we've met the same problem some days ago with delphi 2006 and JCL and we just found a simple way to solve it : you have to change your compiler settings to align record data on 4 bytes.

For Delphi 2006, Go to Project => Options => Compiler => Code generation and look for the "Field Record Alignment" with a combobox with possible values : "0,1,2,4,8". You have to choose 4 (8 also seems to work) and recompile all your project
I do not know for other Delphi versions but it should be quite similar IMHO

PS : Sorry for writing in english on a german forum :(. I hope someone could translate it to others people here


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:08 Uhr.
Seite 2 von 3     12 3      

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