Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi SaveDialog --> Debugger Exception (https://www.delphipraxis.net/98376-savedialog-debugger-exception.html)

Störtebeker 26. Aug 2007 13:38


SaveDialog --> Debugger Exception
 
Hallo,

ich habe ein kleines Problem mit meinem Programm:

Ich habe mir zufällig die Vista CaptionButton runtergeladen (Inactive + Active) und verwende für den Wechsel folgendes von der TImage Komponente:

OnMouseDown:

Delphi-Quellcode:
begin
Image1.Picture.LoadFromFile('close-hover.png');
end;
und OnMouseUp:

Delphi-Quellcode:
begin
Image1.Picture.LoadFromFile('close.png');
end;
und OnClick:

Delphi-Quellcode:
begin
Form1.close;
end;
funzt auch alles. Nur wenn ich jetzt einen SaveDialog in mein Programm einfüge und dem entsprechenden Item im Mainmenü folgendes zuweise:

Delphi-Quellcode:
procedure TForm5.HTMLDokumentspeichern1Click(Sender: TObject);
var Dateiname: string;
begin
if SaveDialog1. Execute then
begin
    if ExtractFileExt(SaveDialog1.FileName) = '' then
      case SaveDialog1.FilterIndex of
        1: DateiName := ChangeFileExt(SaveDialog1.FileName,'.html');
        2: DateiName := ChangeFileExt(SaveDialog1.FileName,'.htm');
      end
    else
      Dateiname := SaveDialog1.FileName;
    SynEdit1.Lines.SaveToFile(Dateiname);
  end;
end;
und ich speichere und anschließend das Programm beenden möchte, kommt Delphi mit:

Zitat:

Debugger Exception Notification

Project Project1.exe raised exception class EFOpenError with message 'Cannot open file close.png'.
Process stopped. Please Step or Run to continue.
Die File ist allerdings im Projektordner drinne. Und ohne SaveDialog funzt es auch.

!!Please Help!!

mfG
Störtebeker

SirThornberry 26. Aug 2007 13:43

Re: SaveDialog --> Debugger Exception
 
Der SaveDialog ändern den aktuellen Arbeitspfad.
Da du nie davon ausgehen solltest das der User beim Start deines Programmes, den Arbeitspfad auf den Pfad deines Programmes setzt, solltest du generell absolute Pfadangaben verwenden.

Ist dein aktuelles Arbeitsverzeichnis zum Beispiel "c:\Windows" würde versucht werden die Bilder in diesem Ordner zu finden. Und das Arbeitsverzeichnis ist NICHT das gleiche wie das Verzeichnis wo die Anwendung liegt.

besser:
Delphi-Quellcode:
ExtractFilePath(Application.ExeName) + 'dateiname';

Störtebeker 26. Aug 2007 13:47

Re: SaveDialog --> Debugger Exception
 
Muss ich jetzt

Delphi-Quellcode:
if ExtractFileExt(SaveDialog1.FileName) = '' then
durch

Delphi-Quellcode:
ExtractFilePath(Application.ExeName) + 'dateiname';
austauschen?

Sry. hatte bisher nie das Problem.

SirThornberry 26. Aug 2007 13:49

Re: SaveDialog --> Debugger Exception
 
bisher hast du es so:
Delphi-Quellcode:
FileName := 'close-hover.png';
und daraus solltest du folgendes machen:
Delphi-Quellcode:
FileName := ExtractFilePath(Application.ExeName) + 'close-hover.png';

Störtebeker 26. Aug 2007 13:58

Re: SaveDialog --> Debugger Exception
 
Nochmal Sry. Irgendwie stehe ich gerade auf dem Schlauch:

meinst du so:
Delphi-Quellcode:
begin
Image1.Picture.LoadFromFile.ExtractFilePath(Application.ExeName) + 'close-hover.png';
end;

Störtebeker 26. Aug 2007 14:09

Re: SaveDialog --> Debugger Exception
 
Es GEHT :thumb: --> mit:

Delphi-Quellcode:
begin
Image1.Picture.loadfromfile(ExtractFilePath(Application.ExeName) + 'close-hover.png');
end;
Verbessere mich bitte, falls ich doch faslch liege.

Dank dir.

SirThornberry 26. Aug 2007 16:06

Re: SaveDialog --> Debugger Exception
 
du liegst nicht falsch.

Luckie 26. Aug 2007 16:21

Re: SaveDialog --> Debugger Exception
 
Zitat:

Zitat von SirThornberry
Der SaveDialog ändern den aktuellen Arbeitspfad.

Tausendmal gepredigt und immer noch wird es ignoriert: "Das Arbeitsverzeichnis muss nicht zwingend das Programmverzeichnis sein!"


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.

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