Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
737 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DEC Benchmark und FMX Buttons

  Alt 25. Mai 2021, 08:57
Mittlerweile gelöst.

Ich habe eine Gegenfrage, welche sicher jemand (unabhängig von DEC Kenntnissen) beantworten kann.

Ich halte das hier Beschriebene für einen heftigen Bug. Vielleicht bin ich aber auch einfach viel zu "Android unerfahren" und mache was falsch.

Ich wollte die Benchmark App (\DEC\Demos\HashBenchmark_FMXHashBenchmark.dproj) von DEC unter Android 64 debuggen und habe einen Haltepunkt gesetzt in procedure TFormMain.RunBenchmark Zeile FStopwatch.Reset; (Code unten) Bedingung rowindex=19. (Ich habe also "rowindex" klein geschrieben.)

Delphi-Quellcode:
procedure TFormMain.RunBenchmark(ClassName: string; RowIndex: Integer);
var
  Hash : TDECHash;
  HashResult : TBytes;
  i : Integer;
begin
  Hash := TDECHash.ClassByName(ClassName).Create;

  try
    FStopwatch.Reset;

Wenn das Programm das erste Mal bei diesem Haltepunkt durchläuft, dann wird mir diese Fehlermeldung angezeigt:

[Window Title]
Fehler
[Content]
Ungültige Bedingung für Haltepunkt: rowindex = 19. Fehlermeldung: error: use of undeclared identifier 'rowindex'
error: 1 errors parsing expression
[OK]

Debuggen unter Windows funktioniert wie erwartet: Es wird beim Erreichen von rowindex=19 angehalten.

So weit so schlecht. Also denke ich, ich muss Gross- und Kleinschreibung beachten. Da unter Haltepunkt bereits rowindex=19 bekannt ist, nimmt's meinen "neuen" Haltepunkt RowIndex=19 nicht an (schade). Die Fehlermeldung bleibt.

Also teste ich halt mit RowIndex=18. Unter Windows läuft's wiederum wie erwartet.

Unter Android64: Jetzt wird kein Fehler mehr angezeigt. Aber jetzt hat der Haltepunkt RowIndex=18 Einfluss aufs Programm (!).

Weiter unten in der gleichen Prozedur wird ein Wert in sg_Results.Cells[1, RowIndex] (TStringGrid) geschrieben.

Delphi-Quellcode:
    sg_Results.Cells[1, RowIndex] :=
      Format('%0:f', [cIterations / (FStopwatch.ElapsedMilliseconds/1000)]);
    sg_Results.Cells[2, RowIndex] := FStopwatch.Elapsed.ToString;
Rate mal, wo reingeschrieben wird.

Alle Ausgaben werden nach sg_Results.Cells[1, 18] "umgeleitet".

Die Haltepunkt Bedingung RowCount=18 bewirkt also unter Android, dass im Programm RowCount:=18 gesetzt wird.


Jede Hilfe wird geschätzt . Danke.

Mittlerweile gelöst.
Michael Gasser

Geändert von Michael II (25. Mai 2021 um 19:49 Uhr)
  Mit Zitat antworten Zitat