AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Fehlerbehandlung - Fehler nicht anzeigen

Ein Thema von FediDelPr · begonnen am 4. Mai 2021 · letzter Beitrag vom 4. Mai 2021
Antwort Antwort
FediDelPr

Registriert seit: 16. Feb 2018
104 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Fehlerbehandlung - Fehler nicht anzeigen

  Alt 4. Mai 2021, 01:09
Delphi-Version: 2010
In meinem Programm das Files in Windows scannt müssen gelockte Files
übersprungen werden, ohne dass das Programm stoppt. Allenfalls sollen die
gelockten Files gezählt werden.

Zurzeit stoppt das Programm jeweils mit der Meldung 'Filexxx is locked'
was unerwünscht ist.
Das Verhalten findet im Non-Debug Mode statt.

Ich verwende folgenden Code:

Code:
TRY
  fs := TFileStream.Create(fName, fmOpenRead OR fmShareDenyNone);
EXCEPT
  ON EFOpenError DO
    BEGIN
      (* .. zB Locked Files zaehlen *)
    END;
Hat jemand eine Idee wie ich die Meldung unterdrücke ?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.018 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Fehlerbehandlung - Fehler nicht anzeigen

  Alt 4. Mai 2021, 02:05
Was bedeutet "locked" in Deiner Situation?
Was soll es denn "scannen"?

Ein wenig mehr Informationen bitte.

Aus dem Bauch heraus:
Delphi-Quellcode:
TRY
  fs := TFileStream.Create(fName, fmOpenRead OR fmShareDenyNone);
EXCEPT
// ON EFOpenError DO
    BEGIN
      (* .. zB Locked Files zaehlen *)
    END;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.899 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Fehlerbehandlung - Fehler nicht anzeigen

  Alt 4. Mai 2021, 06:42
Ich vermute einmal du suchst SetErrorMode:
https://docs.microsoft.com/en-us/win...i-seterrormode

Standardmäßig leitet Windows kritische Fehler nicht an die aufrufende Anwendung weiter, sondern zeigt stattdessen einen Fehlerdialog an. Das kannst du damit ändern.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.110 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Fehlerbehandlung - Fehler nicht anzeigen

  Alt 4. Mai 2021, 07:55
Ja, auch die Standardeinstellung von SetErrorMode in Delphi (RTL) ist auch so ausgelegt, dass nichts angezeigt wird. (Ausnahme gibt es bei einigen uralten grottigen Treibern für z.B. Hardware/Netzwerkkarten)
Es gibt aber einige Fremdkomponenten, welche (fast böswillig) global den Modus ändern. (nachschauen, falls du Welche verwendest und über einen Austausch nachdenken)

Und ja, normalerweise löst diese API (Bei Google suchenCreateFile) keine Anzeige einer Fehlermeldung aus.
Delphi wertet nur den Rückgabewert (Bei Google suchenGetLastError) aus und erstellt daraus eine Delphi-Exception (Delphi-Referenz durchsuchenSysErrorMessage), welche sich dann mit EXCEPT abfangen lässt (so lange man es dann nicht mit RAISE weiterleitet).



Im Debugger würde zwar angehalten (so lange man diese Exception nicht ignorieren lässt), aber das ist dann eine Meldung vom Debugger und nicht aus dem Programm.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 4. Mai 2021 um 07:59 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 04:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf