Thema: Delphi TSave Dialog Exception

Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: TSave Dialog Exception

  Alt 13. Mai 2011, 22:30
Irgendie hast du das mit dem try .. finally wohl noch nicht verstanden
Delphi-Quellcode:
MyObject := TMyObject.Create; // Instanz erzeugen

try // Hier beginnt der Schutzblock

  MyObject.DoSomeThing; // Beliebig viele Sachen durchführen

  // und egal was hier drinnen passiert (z.B. eine Exception)

finally // wird das hier ausgeführt
  MyObject.Free; // Instanz aus dem Speicher entfernen
end;
Dein Konstrukt
Delphi-Quellcode:
function Speichern_mit_Dialog : boolean;
var Speicher_Pfad : string;
    Ordner_Pfad : string;
    Datei_Name : string;
begin

  try

  ...

  finally
    Result := True;
  end;
  ...
end;
ist völlig unsinnig ... auch wenn ein Fehler auftritt, dann soll der Rückgabewert True sein?
Ok, dann reicht das völlig aus (fragt sich nur wozu dann eine Funktion
Delphi-Quellcode:
function Speichern_mit_Dialog : boolean;
var Speicher_Pfad : string;
    Ordner_Pfad : string;
    Datei_Name : string;
begin

  // Kein try mehr

  Result := True; // Result setzen ...

  // Hier jetzt dein Rest-Code

  Programm.SpeicherDialog.InitialDir := Dokumente_Pfad;

  if Programm.SpeicherDialog.Execute = True then
    begin
      Datei_Name := ExtractFileName(Programm.SpeicherDialog.FileName);
      Ordner_Pfad := Dokumente_Pfad+'\'+ChangeFileExt(Datei_Name,'');
      if not DirectoryExists(Ordner_Pfad) then
            ForceDirectories(Ordner_Pfad);

      Speicher_Pfad := Ordner_Pfad+'\'+Datei_Name;
      AktuellerDateiName := Speicher_Pfad;
    {***Speichern***}
      if Speichern(Speicher_Pfad) = True then //Das eigentlich speichern ist unwichtig, es verursacht den Fehler nicht (getestet)
        ShowMessage('Speichern erfolgreich.')
          else
            ShowMessage('Speichern abgebrochen.');
    end;

end;
Und GAAAAANZ wichtig so bitte nie niemals nicht
Delphi-Quellcode:
if Programm.SpeicherDialog.Execute = True then

if Speichern(Speicher_Pfad) = True then
Das reicht aus und funktioniert immer
Delphi-Quellcode:
if Programm.SpeicherDialog.Execute then

if Speichern(Speicher_Pfad) then
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (13. Mai 2011 um 22:34 Uhr)
  Mit Zitat antworten Zitat