![]() |
Ausgabe von Fehlermeldungen in einer Consolenanwendung
Hallo,
ich habe eine kleine Consolenanwendung geschrieben. Die Anwendung verbindet ein Netzlaufwerk auf einen freien Laufwerksbuchstaben und startet von dort ein Programm, ist das Programm beendet wird das Netzlaufwerk wieder getrennt. Werden nun dem Programm Parameter übergeben, die nicht korrekt sind soll eine Fehlermeldung ausgegben werden. Die Fehlermeldung wird auch ausgegeben allerdings auch als Fenster ich möchte die Meldung aber nur in der Console (DOS-Box) haben. So wie hier dargestellt: Zitat:
Delphi-Quellcode:
Kann man WNetAddConnection2 dazu bringen, die Fehlermeldungen
function ConnectNetworkDrive(const ADrive: String;
const ADirectory, AUsername, APassword: String; const ARestoreAtLogon: Boolean ): Boolean; var NetResource: TNetResource; dwFlags: DWORD; lPwd, lUser: PChar; begin NetResource.dwType:=RESOURCETYPE_DISK; NetResource.lpLocalName:=PChar(ADrive); NetResource.lpRemoteName:=PChar(ADirectory); NetResource.lpProvider:=nil; if ARestoreAtLogon then dwFlags:=CONNECT_UPDATE_PROFILE else dwFlags:=0; if AUsername<>'' then lUser:=PChar(AUsername) else lUser:=nil; if APassword<>'' then lPwd:=PChar(APassword) else lPwd:=nil; Result:=WNetAddConnection2(NetResource, lPwd, lUser, dwFlags)=NO_ERROR; end; nur auf die Console auszugeben? Habe dazu bisher nichts gefunden. Vielleicht hat ja jemand einen Rat. Grüße Klaus |
Re: Ausgabe von Fehlermeldungen in einer Consolenanwendung
Hallo Klaus,
du kannst die exception abfangen und in deinem Sinne behandeln - etwa so:
Delphi-Quellcode:
Grüße vom marabu
// ...
try Result := WNetAddConnection2(NetResource, lPwd, lUser, dwFlags) = NO_ERROR: except on E: Exception do begin WriteLn(con, E.Message) // ... weitere Maßnahmen von dir end; end; |
Re: Ausgabe von Fehlermeldungen in einer Consolenanwendung
Hallo,
ersteinmal danke an marabu. Mit try und except ließ sich das Problem nicht beheben. WNetAddConnection2 erzeugt keine Exception. Das Fehlermeldungsfenster und der Text in der Console kam von RaiseLastOSError. Asche auf mein Haupt! Um den letzen Fehlercode von WNetAddConnection2 zu bekommen sollte man GetLastError verwenden. Folgende der Code wie er nun ist. Grüße Klaus
Delphi-Quellcode:
/********************************************************************************
function ConnectNetworkDrive(const ADrive: String; const ADirectory, AUsername, APassword: String; const ARestoreAtLogon: Boolean ): Boolean; var NetResource: TNetResource; dwFlags: DWORD; lPwd, lUser: PChar; begin NetResource.dwType:=RESOURCETYPE_DISK; NetResource.lpLocalName:=PChar(ADrive); NetResource.lpRemoteName:=PChar(ADirectory); NetResource.lpProvider:=nil; if ARestoreAtLogon then dwFlags:=CONNECT_UPDATE_PROFILE else dwFlags:=0; if AUsername<>'' then lUser:=PChar(AUsername) else lUser:=nil; if APassword<>'' then lPwd:=PChar(APassword) else lPwd:=nil; Result:=WNetAddConnection2(NetResource, lPwd, lUser, dwFlags)= NO_ERROR; if not Result then begin TextColor(yellow); WriteLn(SysErrorMessage(GetLastError)); TextColor(lightGray); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz