AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

try...except probleme

Ein Thema von meximum · begonnen am 24. Nov 2003 · letzter Beitrag vom 26. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
meximum

Registriert seit: 21. Nov 2003
14 Beiträge
 
#1

try...except probleme

  Alt 24. Nov 2003, 17:19
Hi zusammen!

Aus unerklärlichen (oder doch erklärlichen) Gründen funktioniert diese Funktion nicht...:

Delphi-Quellcode:
   try
    // Aus unerklärlichen Gründen funktioniert diese Funktion nicht!!!!
    ImgBild.Picture.LoadFromFile(s);
    except
      if not FileExists(s) then begin
        if PCArtikelRegister.ActivePage = TShBild then begin
                     //'Das gespeicherte Bild %s kann nicht gefunden werden!'
          MessageDlg(Format(BildAnzeigen_Str01,[s]),mtError,[mbOK],0);
        end;
      end;
    end;
gibt gleich einen absturz wenn das vorhandene bild nicht gefunden wurde, sollte jedoch abgefangen
werden...heeelp

MfG

Mexx

[edit=sakura] [delphi]-Tags gesetzt. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von HAF4ever
HAF4ever

Registriert seit: 31. Okt 2003
Ort: Enns - Österreich
37 Beiträge
 
#2

Re: try...except probleme

  Alt 24. Nov 2003, 17:23
Zitat von meximum:
try
// Aus unerklärlichen Gründen funktioniert diese Funktion nicht!!!!
ImgBild.Picture.LoadFromFile(s);
except
if not FileExists(s) then begin
if PCArtikelRegister.ActivePage = TShBild then begin
//'Das gespeicherte Bild %s kann nicht gefunden werden!'
MessageDlg(Format(BildAnzeigen_Str01,[s]),mtError,[mbOK],0);
end;
end;
end;
am ersten blick stört mich der ;
mach ihn mal weg, und probiers noch mal
gtg, no time, can't talk, get watched, .....
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: try...except probleme

  Alt 24. Nov 2003, 17:28
Öhm. Nur mal so über die Logik deiner Funktion nach gedacht. Deine Routine funktioniert so, um es mal in Worten auszudrücken.

1. Lade Bild sowieso.
2. wenn es schief geht überprüfe, ob es vorhanden ist.
3. ist es nicht vorhanden gib Mesasagebox aus.

Punkt 2 ist der Punkt der etwas irrsinnig ist in deinem Code. Wie wäre es vor dem Laden des Bildes zu kucken, ob die Datei existiert ode rnicht und dann von dem Ergebnis alles weitere abhängig zu machen?

1. Prüfe, ob Datei vorhanden ist.
2a. Datei vorhandem: lade Bild.
2b. Datei nicht vorhanden, gib Message aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#4

Re: try...except probleme

  Alt 24. Nov 2003, 19:46
Geht doch aber auch mit try ... except ?!

Delphi-Quellcode:
 try
   ImgBild.Picture.LoadFromFile(s);
except
   on Exception do begin
      ShowMessage ('Fehler');
      exit;
   end;
end;

devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: try...except probleme

  Alt 24. Nov 2003, 19:48
Aber wozu? Jeder try-except Block verursacht unmengen an CPU Taktzyklen zum dem muss vom User-Mode in den Kernel-Mode geschaltet werden, was auch noch mal kostet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
meximum

Registriert seit: 21. Nov 2003
14 Beiträge
 
#6

Re: try...except probleme

  Alt 25. Nov 2003, 11:42
Der Ansatz das File zuerst zu auf Existenz zu prüfen und anschliessend zu laden
macht einiges mehr sinn.
Trotzdem habe ich das problem, dass die exception einfach ignoriert wird, trotz des fehlenden bildes.


Delphi-Quellcode:
  try
   if FileExists(s) then ImgBild.Picture.LoadFromFile(s);
  except
   begin
     if PCArtikelRegister.ActivePage = TShBild then begin
       //'Das gespeicherte Bild %s kann nicht gefunden werden!'
       MessageDlg(Format(BildAnzeigen_Str01,[s]),mtError,[mbOK],0);
     end;
   end;
  end;

Gruss

meximum

[edit=sakura] [delphi]-Tags gesetzt. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Tom

Registriert seit: 8. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: try...except probleme

  Alt 25. Nov 2003, 11:46
FileExists löst doch gar keine Exception aus. Die Funktion gibt nur True/False zurück. Nicht mehr und nicht weniger.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#8

Re: try...except probleme

  Alt 25. Nov 2003, 11:48
dann mach es doch wie es devnull beschrieben hat
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#9

Re: try...except probleme

  Alt 25. Nov 2003, 11:50
Warum try.. except? Ersetz in der letzten Prozedur einfach Except durch Else und lass das Try weg und gut is...

Also so:
Delphi-Quellcode:
if FileExists(s) then
  ImgBild.Picture.LoadFromFile(s)
Else begin
  if PCArtikelRegister.ActivePage = TShBild then
    MessageDlg(Format(BildAnzeigen_Str01,[s]),mtError,[mbOK],0);
end;
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#10

Re: try...except probleme

  Alt 25. Nov 2003, 12:06
Zitat von Treffnix:
Warum try.. except?
Hallo Treffnix,

auch wenn eine Datei mit bekanntem Dateinamen existiert, kann beim Laden ein Fehler auftreten (unbekanntes Format/Endung, fehlerhafte Datei, IO-Fehler, etc).

@meximum: Lagere Deine Ausgaberoutine aus und verwende sie zur Darstellung des überprüfbaren Fehlerquelle und zur Ausgabe eines unerwarteten Fehlers etwa in dieser Art
Delphi-Quellcode:
try
  if NotwendigeBedingung(AParam) then
    FuehreAus(AParam)
  else
    ZeigeFehler(FooConst, AParam);
except
  on E: Exception do
    ZeigeFehler(BarConst, AParam, E);
end;
@devnull, Tyrael: Exceptions sind sicher kein Performance-Problem bei Dialogorientierten abläufen und tatsächlich wird mit der vorherigen Prüfung "doppelt getestet" (andernfalls könnte ja keine Exception geworfen werden).
Dieser Stil allerdings macht die Intention des Programmierers undeutlich. Denke bspw an das Lösen einer Wurzel im Reelen: Eine Fallunterscheidung macht deutlich, was gemeint ist, eine Exception verwirrt. Bei ungleich komplexeren Problemen ist der Code eines Fremden nicht mehr zu verstehen, weil Fehlerquelle und -behandlung zu weit voneinander entfernt sind...

Vielleicht hilft auch dieser Thread oder der Artikel Brian Goetz, Exceptional practices, Part 1-3 weiter...
gruß, choose
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:20 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