Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Opendialog wird in IDE nicht angezeigt (https://www.delphipraxis.net/160314-opendialog-wird-ide-nicht-angezeigt.html)

ede57 6. Mai 2011 21:40

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;

ConnorMcLeod 7. Mai 2011 02:36

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;

himitsu 7. Mai 2011 09:01

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.

ede57 7. Mai 2011 09:46

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 ??

himitsu 7. Mai 2011 10:15

AW: Opendialog wird in IDE nicht angezeigt
 
Zitat:

Zitat von ede57 (Beitrag 1099467)
Gibt es vielleicht unterschiede wenn man ein Formular mal mit D2010 und dann mit DXE
bearbeitet ??

Nee, eigentlich nicht.

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.

ede57 7. Mai 2011 10:25

AW: Opendialog wird in IDE nicht angezeigt
 
Zitat:

Zitat von himitsu (Beitrag 1099469)
Zitat:

Zitat von ede57 (Beitrag 1099467)
Gibt es vielleicht unterschiede wenn man ein Formular mal mit D2010 und dann mit DXE
bearbeitet ??

Nee, eigentlich nicht.

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.

Das kann ja nicht sein. Ausserhalb der IDE läuft alles einwandfrei. Auch wenn ich ein komplett neues
Project erzeuge, funktioniert alles, auc innerhalb der IDE

ConnorMcLeod 7. Mai 2011 10:32

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 ;-)

turboPASCAL 7. Mai 2011 10:54

AW: Opendialog wird in IDE nicht angezeigt
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1099472)
Pffuuhhh. Jetzt fällt mir spontan mal nix mehr ein ;-)

Einfach mal debuggen. Breakpoints setzen... ;)

ConnorMcLeod 7. Mai 2011 11:08

AW: Opendialog wird in IDE nicht angezeigt
 
Ist ausserhalb der IDE schwierig ...

rollstuhlfahrer 7. Mai 2011 11:20

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 08:58 Uhr.
Seite 1 von 3  1 23      

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