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)