Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
21. Sep 2016
SetLastError(0);
DeleteFile(...);
if GetLastError <> 0 then
ZeigeFehler(GetLastError);
Auch da muß das Ergebnis nicht stimmen, selbst wenn es nur eine Funktion ist.
Es steht ja extra so in der Hilfe
Für Result=True ist LastError halt selten definiert, da es dann eben keinen Fehler gab ... soll heißen, es kann sein, dass DeleteFile den LastError unverändert lies, oder jetzt was...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
21. Sep 2016
GetLastError gibt per Definition den letzten Fehler zurück,
aber da ständig irgenwelche Trottel mit SetLastError rumpfuschen und solche arbeiten auch bei Microsoft selber, stimmt das eben nicht immer.
Und mit SetLastError setzt man einen "neuen" Fehlercode, womit er dann der Letzte ist.
PS: 0 ist auch ein "Fehler Code", weswegen es auch einen beliebten Fehler in der Fehlerbehandlung gibt....
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
31. Aug 2016
Ähhhhh, FALSCH und FALSCH.
siehe DeleteFile
procedure checkErrorDeleteFile(const path : string);
begin
//SetLastError(0); // das heißt LAST-Error und nicht THIS-Error
is not DeleteFile(PChar(path)) then // rate mal, warum der Wert von GetLASTError nur "definitert" ist, wenn es einen Fehler gab :roll:
//ShowMessage(IntToStr(GetLastError)); //ShorMessage als Fehlerbehandlung?
...