Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Absturz trotz try/finally

  Alt 27. Mai 2004, 15:46
Ich bin kurz vor dem Verzweifeln. Was ist bei einem VCL-Programm anders als bei einem nonVCL/Konsolenprogramm? Ich habe hier in etwa folgenden Code:
Delphi-Quellcode:
rs := Interface.Create;
if(rs <> nil) then
try
  try
    rs.Connect;
  except
    rs := nil;
  end;

  if(rs <> nil) then
  try
    filter := rs.GetFilterInterface;

    if(filter <> nil) then
    try
      filter.Create('Filter','');
    except
      // do nothing
    end;
  finally
    rs.CloseConnection;
  end;
finally
  rs := nil;
end;
Es ist nur Pseudo-Code, sorry. Aber grundlegend sieht er so aus.


Wenn ich den Code jetzt in einem VCL-Programm starte (besser gesagt: wenn ich das kompilierte VCL-Programm starte), dann legt er den Filter mit dem leeren Inhalt an, schließt die Verbindung, und fertig. Mache ich das jetzt in einen nonVCL/Konsolenprogramm, dann erhalte ich eine Zugriffsverletzung, und die Verbindung wird nicht richtig geschlossen. Trotzdem wird der Filter angelegt, nur dass (im Gegensatz zum VCL-Programm) diese Zugriffsverletzung erscheint. Ist der Filter nicht leer, also
      filter.Create('Filter','Testinhalt'); dann geht es auf einmal.


Kennt jemand den Grund dafür?
Ich muss zugeben, ich habe keine Ahnung.
  Mit Zitat antworten Zitat