AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Ausgabe von Fehlermeldungen in einer Consolenanwendung
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe von Fehlermeldungen in einer Consolenanwendung

Ein Thema von Klaus01 · begonnen am 30. Jan 2006 · letzter Beitrag vom 30. Jan 2006
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ausgabe von Fehlermeldungen in einer Consolenanwendung

  Alt 30. Jan 2006, 10:23
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:
netinstall -s \\1234 -u test -p test2 -e setup.exe
Exception EOSError in module netInstall.exe at 0000A5AA.
System Error. Code: 67.
Der Netzwerkname wurde nicht gefunden.
Hiermit verbinde ich das Netzlaufwerk:

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;
end;
Kann man WNetAddConnection2 dazu bringen, die Fehlermeldungen
nur auf die Console auszugeben? Habe dazu bisher nichts gefunden.

Vielleicht hat ja jemand einen Rat.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Ausgabe von Fehlermeldungen in einer Consolenanwendung

  Alt 30. Jan 2006, 10:32
Hallo Klaus,

du kannst die exception abfangen und in deinem Sinne behandeln - etwa so:

Delphi-Quellcode:
// ...
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Ausgabe von Fehlermeldungen in einer Consolenanwendung

  Alt 30. Jan 2006, 18:53
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;
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 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