![]() |
Opendialog wird in IDE nicht angezeigt
Hallo,
wenn ich die procedure unter Win7 ausführe wird von > openDialog.Execute < gleich nach > if dxfFilename = '' then Exit;< gesprungen Also alles nach Execute wird gar nicht erst Ausgeführt Außerhalb der IDE läuft alles i.o. Habe Kasperski kein Avira. Kasperski komplett ausgeschaltet Trotzdem funktioniert es nicht Bei einem Anderen Project funktioniert der OpenDialog innerhalb der IDE einwandfrei
Delphi-Quellcode:
procedure Tfo_main_form.sBtnLoadDxfFileClick(Sender: TObject);
Var DxfFilename : String; X,Y : integer; dxl : TDXF_Layer; DXXF : TDxf_Entitie; begin opdlg_DxfOpen.InitialDir := ExtractFilePath( Application.ExeName); if opdlg_DxfOpen.Execute then begin DxfFileName := opdlg_DxfOpen.FileName; if dxfFilename = '' then Exit; DXFFileReader := TDxfReader.Create(dxfFilename); if DXFFileReader.DxfOk then begin DxfFile := TDxf_File.Create; DXFFileReader.DxfFile := DxfFile; DXFFileReader.Execute; end; FREEANDNIL(DXFFileReader); end; // keine Datei ausgewählt if dxfFilename = '' then Exit; DxfFile.Calculate; FDxfFileShow := True; ShowMinMax; end; |
AW: Opendialog wird in IDE nicht angezeigt
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; |
AW: Opendialog wird in IDE nicht angezeigt
Und man kann dem Opendialog auch sagen, daß er die angegebene Datei prüfen soll (siehe .Options).
Dann läßt der Opendialog nur Dateinamen von existierenden Dateien zu. |
AW: Opendialog wird in IDE nicht angezeigt
Vielleicht habe ich mich nicht richtig ausgedrückt.
Der OpenDialog wird gar nicht werst angezeigt bzw ausgeführt. Vermute das der Fehler irgendwo im DFM liegt. Bei eine NEU erzeugten anwendung funktioniert dieser CodeTeil einwandfrei. Gibt es vielleicht unterschiede wenn man ein Formular mal mit D2010 und dann mit DXE bearbeitet ?? |
AW: Opendialog wird in IDE nicht angezeigt
Zitat:
Das Einzige, wo ich weiß, daß die dahinterliegende WinAPI einen Bug hat (schon seit vielen vielen Jahren) das ist, wenn man bei Filename vor dem Aufruf einen ungültigen Pfad angegeben hat, dann wird der Dialog nicht angezeigt und es gibt auch keine Fehlermaldung. |
AW: Opendialog wird in IDE nicht angezeigt
Zitat:
Project erzeuge, funktioniert alles, auc innerhalb der IDE |
AW: Opendialog wird in IDE nicht angezeigt
Verstehe beinahe ... da würde ich mal auf den ersten Blick vermuten, dass opdlg_DxfOpen nicht erzeugt ist, oder ExtractFilePath ein Riesenproblem hat.
Ist der Pfad zur EXE verschieden bei IDE/ausserhalb? Wird die Prozedur überhaupt aufgerufen? Gibt es zwei verschiedene Datei-öffnen-Prozeduren? ( => diese hier versagt, aber die andere tut dann) Ist der OpenDialog created? Versuche vllt ein try-except mit Fehlermeldung(en). Versuche vllt, alle Logik zu entfernen, bis nur noch *Datei öffnen* überbleibt. Bau Log-Meldungen ein. Pffuuhhh. Jetzt fällt mir spontan mal nix mehr ein ;-) |
AW: Opendialog wird in IDE nicht angezeigt
Zitat:
|
AW: Opendialog wird in IDE nicht angezeigt
Ist ausserhalb der IDE schwierig ...
|
AW: Opendialog wird in IDE nicht angezeigt
Doch: Exzessives Logging (nach jeder Zeile 1x Logging aufrufen und alle fehlercodes nach außen führen (auch GetLastError).
Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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