Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion returned falsche Werte? (https://www.delphipraxis.net/200678-funktion-returned-falsche-werte.html)

Lyan 15. Mai 2019 04:46

Delphi-Version: 10.2 Tokyo

Funktion returned falsche Werte?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Heute wieder angefangen mit Delphi seit langem und schon hab ich 3 Fragezeichen auf dem Kopf.

Hier ein kleiner Ausschnitt der Funktion
Delphi-Quellcode:
function TCore.GetGlobal: DWORD64;
var
  Registers: TContext;
  Key0, Key1: DWORD64;
  Globals: array[0..20] of DWORD64;
  I: Integer;
begin
  with Registers do
  begin
    Key0 := GLOBAL_INIT_KEYS[0];
    Key1 := GLOBAL_INIT_KEYS[1];
    ConstructKeys(Key0, Key1);
    Rax := Key1;
    R8 := Process.Read64(Process.RvaToVa(GLOBAL0));
    Rdx := DWORD(R8);
    Rax := ROL(DWORD(Rax), 1) + Rdx;
    R8 := R8 shr $20;
Delphi-Quellcode:
function TProcess.Read64(AFrom: DWORD64): DWORD64;
var
  ReadCount: NativeUInt;
begin
  ReadProcessMemory(FProcessHandle, Pointer(AFrom), @Result, SizeOf(DWORD64), ReadCount);
end;
In der Funktion Read64 ist der Wert von Result eine 64-Bit Addresse und nach dem Return ist der zugewiesene Wert irgendwas anderes.

Screenshots im Anhang. Wtf?

Edit:// Okay liegt scheinbar an dem with keyword. Was zeigt mir der Debugger denn da an bei R8? Mit Registers.R8 wird es korrekt dargestellt... War einfach nur sehr verwirrend weil genau der Wert sowieso die Ursache dafür ist dass etwas in der Decryption falsch läuft und dann sah es halt so aus als ob der Grund dafür dass der Wert falsch ist die Funktion ist.

Ich wünschte man könnte wie in Visual Studio einfach global alle Werte als Hex anzeigen und ich könnte einfach über die Variablen hovern beim Debuggen, das ist ja echt zum Ktzen umständlich, Ctrl + F5, Rechtsklick Edit, "Showas Hex"... Wer denkt sich sowas aus? Yep, der Debugger spinnt komplett, bekomme einfach teilweise mal ne 32 Bit Addresse angezeigt, mal den richtigen Wert.

hoika 15. Mai 2019 05:50

AW: Funktion returned falsche Werte?
 
Hallo,
und ohne das with?

haentschman 15. Mai 2019 06:24

AW: Funktion returned falsche Werte?
 
Moin...8-)
Zitat:

Okay liegt scheinbar an dem with keyword
...ich sage es immer wieder, aber keiner hört drauf. :( Mit with nimmst du dir die Debugging Funktionen und bekommst keine oder falsche Werte. :? Kann man das with Schlüsselwort nicht als "abgekündigt" markieren und mit einem Fehler versehen? :stupid:
Machen wir eine Petition an Emba...:thumb:
Zitat:

und ich könnte einfach über die Variablen hovern beim Debuggen
...das geht schon. Aber ohne das with.

hoika 15. Mai 2019 06:39

AW: Funktion returned falsche Werte?
 
Hallo,
in der VCL sind auch
Zitat:

with
drin ;)

ohne mein

with Query do
begin
end;

geht es nicht !

haentschman 15. Mai 2019 06:48

AW: Funktion returned falsche Werte?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

in der VCL sind auch
...da muß aber nicht debuggen. :zwinker:

Zitat:

ohne mein

with Query do
begin
end;

geht es nicht !
... wieso? :stupid:

Delphi-Quellcode:
with Query do
begin
  ParamByName('Blubb').AsInteger := FunctionXY;
end;
...was zeigt der Debugger über AsInteger an? Nüscht. :stupid:

@TE: Hover siehe Bild. http://docwiki.embarcadero.com/RADSt...ring_Debugging
@TE: Bei mir sind diese Fenster (#1) auf Ctrl + F7. Hast du eine andere Konfiguration oder war das ein Tippfehler?

Lyan 15. Mai 2019 08:09

AW: Funktion returned falsche Werte?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von haentschman (Beitrag 1432251)
Zitat:

in der VCL sind auch
...da muß aber nicht debuggen. :zwinker:

Zitat:

ohne mein

with Query do
begin
end;

geht es nicht !
... wieso? :stupid:

Delphi-Quellcode:
with Query do
begin
  ParamByName('Blubb').AsInteger := FunctionXY;
end;
...was zeigt der Debugger über AsInteger an? Nüscht. :stupid:

@TE: Hover siehe Bild. http://docwiki.embarcadero.com/RADSt...ring_Debugging
@TE: Bei mir sind diese Fenster (#1) auf Ctrl + F7. Hast du eine andere Konfiguration oder war das ein Tippfehler?

Habe mich da nicht klar genug ausgedrückt, mir geht es explizit um das Darstellen der Werte in Hexadezimal. Ich brauche so gut wie nie Dezimal. In Visual Studio gibt's da (siehe screenshot).

Was mich auch stört, ist dass die IDE am rumfliegen ist alias "debug view mode". Lässt sich wahrscheinlich deaktivieren aber ist schon spannend, wie ich versuche auf dem rechten Bildschirm zu arbeiten und jedes mal wenn ich auf debuggen drücke siche die gesamte IDE auf den mittleren Bildschirm verschiebt und alle subwindows neu gedockt werden etc...
Ich überreagiere vlt. - vor allem weil ich erst seit heute die IDE habe, aber als gewohnter VS17 nutzer fühlt sich das erst mal sehr clunky und nicht gerade intuitiv an was da visuell passiert (und auch die Werte von with im debug mode). Ich setze mich später mal intensiver mit der IDE auseinander, vlt. gibt's ja paar optionen irgendwo versteckt.

Zitat:

Machen wir eine Petition an Emba...
Bin ich sofort dabei! :D

hoika 15. Mai 2019 08:14

AW: Funktion returned falsche Werte?
 
Hallo,
Zitat:

was zeigt der Debugger an bei AsInteger?
Nüscht, ich habe doch eine Variable auf der rechten Seite, und keinen Funktionsaufruf ;)

Zitat:

mittlerer Monitor
Du hast nur 3 Monitore? arm dran ...

Lyan 15. Mai 2019 09:03

AW: Funktion returned falsche Werte?
 
Zitat:

Du hast nur 3 Monitore? arm dran ...
Naja wenn man den ganzen Tag eh nix anderes macht und sie braucht, warum nicht.

haentschman 15. Mai 2019 09:33

AW: Funktion returned falsche Werte?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Was mich auch stört, ist dass die IDE am rumfliegen ist alias "debug view mode".
..siehe Bild (achte auf die Hits der Buttons):

1. deine Aktuelle Ansicht -> speichern oder mit neuem Namen anlegen. Für jede Aufgabe ein Desktop. :thumb:
2. Debug Ansicht wählen -> einstellen -> speichern -> Debug Desktop einstellen

Fertsch...:P

Zum Thema HEX:
Man kann eigene "Visualisierungen" erstellen. (Bild)
http://docwiki.embarcadero.com/RADSt...sualisierungen
Stichworte:
IOTADebuggerVisualizer
IOTADebuggerVisualizerValueReplacer
IOTADebuggerVisualizerExternalViewer

TurboMagic 15. Mai 2019 20:51

AW: Funktion returned falsche Werte?
 
Zitat:

Zitat von haentschman (Beitrag 1432245)
Moin...8-)
Zitat:

Okay liegt scheinbar an dem with keyword
...ich sage es immer wieder, aber keiner hört drauf. :( Mit with nimmst du dir die Debugging Funktionen und bekommst keine oder falsche Werte. :? Kann man das with Schlüsselwort nicht als "abgekündigt" markieren und mit einem Fehler versehen? :stupid:
Machen wir eine Petition an Emba...:thumb:

Ja, fang doch schon mal damit an, in dem du eine entsprechende Anforderung in quality.embarcadero.com einträgst
und uns hier dann die Report Nummer kundtust... ;-)


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

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