![]() |
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 |
AW: Opendialog wird in IDE nicht angezeigt
Siehe: bau LogMeldungen ein ...
Eine Idee hab ich noch: OllyDbg |
AW: Opendialog wird in IDE nicht angezeigt
Danke für die vielen Tips.
habe das Problem wohl gelöst??. Habe .dProj Datei (nachdem ich diese gesichert hatte) gelöscht. Beim öffnen des Projectes über die .dpr wurde die .dproj neu erstellt. Dann funktionierte alles wieder. Wenn ich die .dproj datei aber wieder austausche,funktioniert nichts mehr. Also lag der fehler wohl in der .dproj Datei. |
AW: Opendialog wird in IDE nicht angezeigt
Danke für die Rückmeldung, das werde ich künftig auch bedenken ;-)
Spannend wäre es jetzt noch, herauszufinden, welcher Eintrag in der .dproj zuständig war. Die .dproj ist ja im XML-Format. Da könnte man der Reihe nach die Einträge entfernen, bis das Phänomen nicht mehr auftritt und damit hat man den Schuldigen. |
AW: Opendialog wird in IDE nicht angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Für interessierte habe ich mal die beiden .dproj Files im Anhang gepackt
|
AW: Opendialog wird in IDE nicht angezeigt
Hallo,
ich habe eure Mails mit Interesse gelesen. Mir widderfähr gerade etwas ähnliches. Open-und Save Dialoge werden in der IDE nicht mehr ausgeführt. In der fertigen Applikation allerdings schon !? Nach der Instalation einer anderen Komponente ( SynEdit ) ist mir dieses Verhalten aufgefallen. Die Komponenten habe ich wieder deinstaliert aber leider ohne Erfolg bezüglich der Open/Save Dialoge. Ich vermute, dass irgend welche Zeiger bzw UmgebungsVariablen der IDE nicht mehr stimmen !??? Habe aber leider keine Ahnung wie ich dem Problem zu Leibe rücken soll. Im vorigen Beitrag wurde was von intensiven Debuggen gesagt. Was meint das und wie macht man das ? Anbei ein einfach VCL Applikation die in der IDE den Open Dialog in beiden Varianten ignoriert, als Anwendung gestartet aber das tut was man erwartet.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; OpenDialog2: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} // // Zwei einfache Varianten einen Dialog aufzurufen // procedure TForm1.Button1Click(Sender: TObject); var openDialog : TOpenDialog; begin openDialog := TOpenDialog.Create(self); if openDialog.Execute then begin ShowMessage(openDialog.FileName + ' selektiert !'); end; openDialog.Free; end; procedure TForm1.Button2Click(Sender: TObject); begin if OpenDialog2.Execute then begin ShowMessage(OpenDialog2.FileName + ' selektiert !'); end; end; end. |
AW: Opendialog wird in IDE nicht angezeigt
Wars nicht bei einem ein Treiber der sich in jede Anwendung reinhängt und der nicht gedebugged werden will?
|
AW: Opendialog wird in IDE nicht angezeigt
Nun... ein Treiber-Problem ist zwar denkbar, aber unwahrscheinlich.
Wenn ich ein älteres Projekt in der IDE starte funktionieren die Dialoge nach wie vor !!!! Also, das Problem tritt offenbar nur bei neuen Projekten auf. Die Sache mit einer neuen .dproj Datei hab ich nicht verstanden! Die Erklärung war mir leider zu kryptisch. Geht auch für Doofe ? |
AW: Opendialog wird in IDE nicht angezeigt
Die *.dproj sichern und löschen. Anschließend Doppelklick auf die *.dpr, Delphi öffnet das Projekt und legt die *.dproj automatisch neu an. Im oben genannten Fall hat das wohl geholfen.
|
AW: Opendialog wird in IDE nicht angezeigt
Danke für den Tip !
Leider hilft's nix. Noch mal zum Mitschreiben: Open/Save Dialoge starten in neuerzeugten Projekten nicht in der IDE In der Anwendung (.exe) jedoch sehr wohl. Bei älteren Projekten funktionieren die Dialog sowohl als auch. Was kann man tun ? |
AW: Opendialog wird in IDE nicht angezeigt
Und wenn Du nun die *.dproj eines älteren funktionierenden Projekts nimmst, umbenennst und wie beschrieben neu anlegen lässt? Funktioniert es dann immer noch, oder nicht mehr? Falls nicht, kannst Du die beiden *.dproj ja einmal im Editor vergleichen (ist ja simples XML).
|
AW: Opendialog wird in IDE nicht angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Also wenn ich im alten Projekt die .dproj Datei lösche und danach
die .dpr Datei starte laufen die Dialoge in der IDE nichtmehr. Leider fällt es mir schwer beide .dproj Dateien zuvergleichen. Hast du da eine Methode diesen Vergleich vorzunehmen ? Wenn Ja, im Anhang sind beide Versionen Danke |
AW: Opendialog wird in IDE nicht angezeigt
die sind identisch
|
AW: Opendialog wird in IDE nicht angezeigt
Stimmt.
Code:
Jetzt gehen mir die Ideen aus :gruebel:
C:\[MeinLokalerPfad]>fc CAMICMACRO_new.dproj CAMICMACRO_old.dproj
Vergleichen der Dateien CAMICMACRO_new.dproj und CAMICMACRO_OLD.DPROJ FC: Keine Unterschiede gefunden |
AW: Opendialog wird in IDE nicht angezeigt
Kann evtl. da Manifest unterschiedlich sein? (*.res-Datei)?
|
AW: Opendialog wird in IDE nicht angezeigt
Liste der Anhänge anzeigen (Anzahl: 1)
Ok !
vieleicht hab ich tatsächlich die gleiche Datei zweimal gepackt. 2.Versuch -- wenn du nochmals so freundlich bist !? |
AW: Opendialog wird in IDE nicht angezeigt
keiner der vorhandenen Unterschiede erklärt für mich das Verhalten...
|
AW: Opendialog wird in IDE nicht angezeigt
Ich sehe da auch nichts, was einen "Ahaa" rufen ließe.
Zitat:
|
AW: Opendialog wird in IDE nicht angezeigt
Vielen Dank an Euch beide !
Tröstlich dabei ist nur die Gewissheit, dass man nicht ganz alleine mit seinem Elend ist... |
AW: Opendialog wird in IDE nicht angezeigt
Ich würde einfach mal nach und nach die Tags, die in der neuen Version hinzugekommen sind, im Editor löschen und dann neu versuchen. Irgendwann muss ja theoretisch der Schuldige dabei sein.
|
AW: Opendialog wird in IDE nicht angezeigt
Sorry für die lange Pause !
Ich habe den Fehler zwar nicht gefunden, aber die IDE läuft wieder! Schuld war ein Eintrag im Environment der einen Eintag enthielt zu einer INCLUDE Datei die nach der Deinstalation einer Komponente nicht mehr existierte. Ich weiß das das keine Erklärung für das Verhalten ist., aber ich gebe mich vorerst damit zufrieden. Es läuft wieder ! Und das ist erstmal die Hauptsache. Gefunden habe ich den Bug durch den Vergleich der .dProj Dateien eines funktionierenden Projekts und der Projektdatei die nach dem Entfernen einer Komponente erzeugt worden ist. Ich habe - wie schon gesagt - keine Ahnung welchen Einfluß der falsche Eintrag in der .dProj auf die nicht mehr starten wollenden Dialoge in der IDE hat, aber das ist mir momentan auch wurscht. Trotzdem vielen Dank für eure Mithilfe bei der Fehlersuche. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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