Theoretisch kann gar kein leerer Filename ausgewählt werden, d.h. Execute kann nur False sein; wie auch immer:
Habe mir erlaubt, das ein bisschen umzubauen. Mir fehlen die DXF-Klassen, aber die Logik mit OpenDialog funkt.
Du bist besser dran, wenn keine exits mitten in der Funktion sind. Wenn überhaupt, dann gut sichtbar am Beginn einer Funktion.
Wenn DxfFile global ist, dann ist
IMHO hier der falsche Zeitpunkt, es zu erzeugen.
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
Var
DxfFilename : string;
opdlg_DxfOpen: TOpenDialog;
dxl : TDXF_Layer;
DXXF : TDxf_Entitie;
begin
opdlg_DxfOpen := TOpenDialog.Create(Self);
try
opdlg_DxfOpen.InitialDir := ExtractFilePath( Application.ExeName);
if opdlg_DxfOpen.Execute and ('' <> opdlg_DxfOpen.FileName) then
begin
DxfFileName := opdlg_DxfOpen.FileName;
DXFFileReader := TDxfReader.Create(dxfFilename);
try
if DXFFileReader.DxfOk then
begin
DxfFile := TDxf_File.Create; // ist das global? wo wird das freigegeben?
DXFFileReader.DxfFile := DxfFile;
DXFFileReader.Execute;
end;
finally
FreeAndNil(DXFFileReader);
end;
DxfFile.Calculate;
FDxfFileShow := True;
ShowMinMax;
end
else
begin
ShowMessage('Fehler beim Öffnen der Datei.');
end;
finally
FreeAndNil(opdlg_DxfOpen);
end;
end;