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/)
-   -   GetLastError over Network (https://www.delphipraxis.net/161593-getlasterror-over-network.html)

Nicodius 11. Jul 2011 15:15

GetLastError over Network
 
Hi Leute,

habe für unsere Firma eine winzige sache programmiert mit der wir eine fehlerhafte configdatei löschen können.

Ich würde gerne einen Errorcode zurückbekommen, das geht aber anscheinend mit herkömmlichen Mitteln nicht übers Netzwerk? Also den Errorcode den ein andere computer zuletzt hatte.

Bisheriger Code(es klappt auf meinem pc, aber wenn ich auf einem anderen PC die datei lösche bekomme ich immer error 0 zurück(er geht also richtig in das else, gibt dann aber immer 0 zurück).

Delphi-Quellcode:
 if DeleteFile('\\' + Host.text + '\C$\Users\' + User.text + '\AppData\Local\Mainsoft\Harmony\configuration\config.ini')
 then
   Liste.items.add('success on user' + User.text)
 else
   Liste.items.add('ERROR on ' + User.text + '-> '+ IntToStr(GetLastError));
Hat wer eine Idee wie ich den richtigen errorcode von einem anderen PC bekomme?


lg Nico

jaenicke 11. Jul 2011 15:52

AW: GetLastError over Network
 
Bei mir funktioniert das problemlos, Zugriff verweigert, Netzwerkname nicht gefunden, ...
Vielleicht bekommt Windows in deinem Fall von dem anderen PC nicht mitgeteilt was schief gegangen ist.

Warum speicherst du eigentlich nur den Fehlercode und nicht auch gleich dessen Beschreibung? :gruebel:
Delphi-Quellcode:
SysErrorMessage(GetLastError)
// gibt dir direkt einen String zurück
// EDIT:
Ach ja, hier ist das Windows 7. Ist das dort vielleicht noch XP oder so?
// EDIT2:
Aber auch dort geht es hier.

Nicodius 11. Jul 2011 15:56

AW: GetLastError over Network
 
Danke mal für die Antwort,
habe es auch direkt gemacht, habe in dem fall nur beide varianten probiert ;)

Leider funktioniert es bei uns nicht, Windows 7 64bit.

lg

himitsu 11. Jul 2011 16:00

AW: GetLastError over Network
 
Da DeleteFile bei dir ausgeführt wird, sollte es auch einen ErrorCode liefern. Aber es wäre gut, wenn du diesen Code direkt nach DeleteFile abfragst und nicht zwischendurch noch einige andere WinAPIs aufrufst, welche ebenfalls diesen Code setzen können/könnten (wie z.B. in User.Text). :zwinker:

Delphi-Quellcode:
if DeleteFile('\\' + Host.Text + '\C$\Users\' + User.Text + '\AppData\Local\Mainsoft\Harmony\configuration\config.ini') then
  Liste.Items.Add('success on user' + User.Text)
else
begin
  E := GetLastError;
  Liste.Items.Add('ERROR on ' + User.Text + '-> '+ SysErrorMessage(E));
end;
Bzw. das Ganze optisch noch etwas zusammenhängender:
Delphi-Quellcode:
if not DeleteFile('\\' + Host.Text + '\C$\Users\' + User.Text + '\AppData\Local\Mainsoft\Harmony\configuration\config.ini') then
begin
  E := GetLastError;
  Liste.Items.Add('ERROR on ' + User.Text + '-> '+ SysErrorMessage(E));
end else
  Liste.Items.Add('success on user' + User.Text);

jaenicke 11. Jul 2011 16:04

AW: GetLastError over Network
 
Zitat:

Zitat von Nicodius (Beitrag 1111170)
Leider funktioniert es bei uns nicht, Windows 7 64bit.

Auf beiden Rechnern Win 7 64bit?

Zitat:

Zitat von himitsu (Beitrag 1111171)
Bzw. das Ganze optisch noch etwas zusammenhängender:

Da fehlt noch ein not. ;-)

Nicodius 11. Jul 2011 16:12

AW: GetLastError over Network
 
Vielen dank euch beiden, mit eingefügtem not hat es funktioniert.

(auf allen 6000 Rechnern ist Win 7 seit 2 Monaten oben, was zum glück unsere Arbeit vereinfacht ;) ).

Liebe Grüße


Nico


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