Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

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

AW: TPath.Combine, TPath.GetTempPath threadsicher?

  Alt 29. Dez 2014, 16:51
Und wenn man so etwas mit aller Gewalt haben will, dann sollte man das auch sprachlich entsprechend hervorheben, damit man auch später noch weiß, dass da etwas in die Hose gehen kann, ohne dass man eine Exception bekommt:
Delphi-Quellcode:
Function CopyResourceToFile( const ResourceID: string ) :String);
var
    ResStream: TResourceStream;
begin
    ResStream := TResourceStream.Create(HInstance, ResourceID, RT_RCDATA);
    try
      //MP3 File aus Resource laden und in Filesystem ablegen
      fName := TPath.Combine(TPath.GetTempPath, 'tmp.mp3');

      ResStream.Position := 0;
      ResStream.SaveToFile(fName);
    finally
      ResStream.Free;
    end;
end;

function TryCopyResourceToFile( const ResourceID: string; out AFileName : string ) : Boolean;
begin
  try
    AFileName := CopyResourceToFile( ResourceId );
    Result := True;
  except
    Result := False;
  end;
end;
Jetzt kann man das wahlweise mit oder ohne Exception-Behandlung benutzen:
Delphi-Quellcode:
// mit Exception
Play( CopyResourceToFile( '42' ) );
// oder ganz bewusst im Code auf die Exception verzichten
if TryCopyResourceToFile( '42', FName ) then
  Play( FName );
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 (29. Dez 2014 um 17:10 Uhr)
  Mit Zitat antworten Zitat