try except -Problem

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

try except -Problem

Beitrag von malabarista »

Ich habe eine Datei, die nur exclusive geöffnet werden darf.
Damit keine System-Fehlermeldung erscheint, habe ich die Abfrage mit einem try-except versehen,
welches aber anscheinend nicht funktioniert, denn ich erhalte die Meldung:
File not open. Press OK ...
und meine Meldung (=aus dem except) dagegen wird nicht angezeigt.
Was habe ich falsch gemacht ?

Code: Alles auswählen

 
     z:='test.dat';
     if FileExists(z) then
        begin
           try
              f:=fileopen(z,fmopenread or fmshareexclusive);
           except
              Showmessage('Datei ist bereits geöffnet');
           end;
        end
     else
        begin
        f:=filecreate(z);
        filewrite(f,'12345',4);
        fileclose(f);
        f:=fileopen(z,fmopenread or fmshareexclusive);
        end;
 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: try except -Problem

Beitrag von Michl »

Passiert das nur, wenn du dein Programm mit dem Debugger startest (von der Lazarus-IDE aus) oder auch außerhalb?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: try except -Problem

Beitrag von theo »

Wahrscheinlich schmeisst FileOpen gar keine Exception sonder gibt nur einen Rückgabewert.

http://www.freepascal.org/docs-html/rtl ... eopen.html

On Error, THandle(-1) is returned.

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: try except -Problem

Beitrag von malabarista »

es passiert in beiden Varianten nichts.

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: try except -Problem

Beitrag von malabarista »

@theo: nur rückgabewert -1 wäre ja ok.
Aber dann kommt ja diese Meldung
File not open...
die ich nicht haben möchte.
Oder kann ich die auf andere Art und Weise unterdrücken?

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: try except -Problem

Beitrag von malabarista »

Oder gibt es eine Compiler-Directive, mit der ich Fehlermeldungen gezielt abschalten kann ?
(will ich ja nur für diesen einen Befehl)

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: try except -Problem

Beitrag von theo »

Bist du sicher, dass die FileOpen Zeile diese Meldung auslöst und nicht irgendwas, wo du später auf das Handle "f" zugreifst?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: try except -Problem

Beitrag von af0815 »

Werkzeuge -> Einstellungen .... dann dort unter Debugger dort unter Sprach-Ausnahmen (oder Betriebssystem-Ausnahmen).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

Re: try except -Problem

Beitrag von malabarista »

Das hat mich zum Ziel gebracht:

Code: Alles auswählen

 
        {$WARNINGS OFF}
        f:=fileopen(z,fmopenread or fmshareexclusive);
        {$WARNINGS ON}
 

Antworten