AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Gelöst: Objectlist nach Exception gelöscht
Thema durchsuchen
Ansicht
Themen-Optionen

Gelöst: Objectlist nach Exception gelöscht

Ein Thema von Rainer Wolff · begonnen am 1. Mär 2012 · letzter Beitrag vom 1. Mär 2012
 
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Gelöst: Objectlist nach Exception gelöscht

  Alt 1. Mär 2012, 13:36
Delphi-Version: XE
Hallo,

ich rufe eine procedure auf mit Werkzeugliste(Objectlist) als Parameter. In der procedure fange ich einen Fehler mit try-except ab und will den Fehler behandeln. Nachdem die Exception aber verarbeitet ist, ist meine Werkzeugliste leer, FList ist nil, count und capacity 0.
Die Schleife läuft durch einige Werkzeuge korrekt durch, bis sie auf ein ungültiges Grafikformat trifft und die Exception ausgelöst wird. In der Exception selbst ist die Werkzeugliste auch noch korrekt, aber sobald ich aus dem Exception-Block steppe, geht die Liste auf null.

Code:
procedure TdmWerkzeugBasis.LoadWerkzeugliste(Werkzeugliste: TWerkzeugliste);
var
  aWerkzeug: TWerkzeug;
  converter: TObjectListXMLKonverter;
resourcestring
  strInvalidGraphic = 'Grafik für Werkzeug %s kann nicht gelesen werden und wird gelöscht. Grafik neu einfügen';
begin
  converter:=TObjectListXMLKonverter.Create;
  try
    IBQWerkzeugliste.sql.text := 'select * from tools order by name';
    IBQWerkzeugliste.Open;
    while not IBQWerkzeugliste.EOF do
    begin
      aWerkzeug     := TWerkzeug(converter.XMLToVirtualPersistent(IBQWerkzeugliste.FieldByName('DATA').AsString));;
      aWerkzeug.Name := IBQWerkzeugliste.FieldByName('NAME').AsString;
      aWerkzeug.OID := IBQWerkzeugliste.FieldByName('OID').AsInteger;

      try
        LoadWMFFromDatabase(IBQWerkzeugliste.FieldByName('WMF_GRAFIK'), aWerkzeug.WmfGrafik);
      except
        On EInvalidGraphic do
        begin
          DeleteWerkzeugGrafikWMF(aWerkzeug.OID);
          MessageDlg(Format(strInvalidGraphic,[aWerkzeug.Name]), mtError, [mbOK], 0);
        end
        else
          raise;
      end;

      Werkzeugliste.Add(aWerkzeug);
      IBQWerkzeugliste.next;
    end;
    IBQWerkzeugliste.Close;
  finally
    converter.free;
  end;
end;

procedure TdmWerkzeugBasis.DeleteWerkzeugGrafikWMF(const WerkzeugId: Integer);
begin
  SQLQuery.SQL.Text:='Update tools set wmf_grafik=null where oid=:werkzeugid';
  SQLQuery.Params.ParamByName('werkzeugid').AsInteger:=WerkzeugId;
  SQLQuery.ExecSQL();
end;

Geändert von Rainer Wolff ( 1. Mär 2012 um 14:03 Uhr)
  Mit Zitat antworten Zitat
 


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 19:37 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-2025 by Thomas Breitkreuz