Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   RasDialFunc2 mit neuer Delphi Version (https://www.delphipraxis.net/211525-rasdialfunc2-mit-neuer-delphi-version.html)

Thomasl 28. Sep 2022 12:54

RasDialFunc2 mit neuer Delphi Version
 
Also es Funktioniert, ich möchte nur nachfragen was sich in Delphi am verhalten geändert hat.

Die Procedure hat so immer Funkioniert Delphi5,Delphi7,Delphi2010,DelphiXE4,DelphiXE8
Jetzt mit 11.x wird nur noch ein Event geliefert, das steht auch so bei MS hier:
https://learn.microsoft.com/en-us/wi...s-rasdialfunc2
Also habe ich die procedure in eine function geändert, und es Funkioniert wieder.(mit allen Versionen)

Jetzt ist nur die Frage warum das vorher immer Funktioniert hat, war vielleicht in den alten Versionen das Result mit Zufallswerten/alten Werten belegt, und jetzt immer mit "0" ?

alt
Delphi-Quellcode:
procedure RasDialFunc2 (dwCallBackId, dwSubEntry: DWORD; ConnHandle: HRASConn;
        Msg: UINT; RasCS: integer; dwError, dwExtendedError: DWORD); stdcall;
begin
..
end;
neu
Delphi-Quellcode:
function RasDialFunc2 (dwCallBackId, dwSubEntry: DWORD; ConnHandle: HRASConn;
        Msg: UINT; RasCS: integer; dwError, dwExtendedError: DWORD): DWord; stdcall;
begin
...
   Result := 1;
end ;

himitsu 28. Sep 2022 13:31

AW: RasDialFunc2 mit neuer Delphi Version
 
Es war einfach nur falsch implementiert.
* als Prozedur im Delphi
* aber Windows erwartet eine Funktion

Wenn am Prozedurende zufällig im EAX etwas ungleich 0 stand, dann entsprach es deinem neuen Result:=1,
aber war zufällig EAX=0, dann wurde indirekt ein Result:=0 gemacht und peng

Thomasl 28. Sep 2022 15:28

AW: RasDialFunc2 mit neuer Delphi Version
 
die älteren Delphi haben EAX unverändert gelassen
die neueren Überschreiben das EAX mit "0"

bei procedure

himitsu 28. Sep 2022 16:51

AW: RasDialFunc2 mit neuer Delphi Version
 
Ahhhhhh...
auch EDX?

OK, also im "Normalfall" eine zusätzlich (winzige) unnötige Operation
und falls Prozedur statt Funktion, dann wenigstens mit definiertem Result (so lange das Result 32 Bit gewesen wäre)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 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