Aufgabe 3.4 – Nutzerdialog myuigetfile()

 

Die MATLAB-Funktion uigetfile() stellt ein Dialogfenster zur Dateiauswahl zur Verfügung. Machen Sie sich zunächst über die MATLAB-Hilfe mit dieser Funktion vertraut. Schreiben Sie dann unter Nutzung von uigetfile() eine eigene Funktion myuigetfile(), die die gleiche Funktionalität wie das Original aufweist, zusätzlich aber dafür sorgt, dass der Dialog bei jedem neuen Aufruf der Funktion automatisch in dem zuletzt ausgewählten Ordner startet. Beim ersten Aufruf innerhalb einer Sitzung soll der Dialog, wie beim Original, im aktuellen Arbeitsverzeichnis beginnen. Achten Sie insbesondere darauf, dass myuigetfile() mit denselben (optionalen) Parametern aufgerufen werden kann, wie uigetfile()!

Lösung

function [FileName PathName]=myuigetfile(varargin)
	%[FileName PathName]=myuigetfile(FilterSpec, Title)
	%
	% same function as uigetfile() but uses previously selected path
	% as default

	persistent PreviousPathName % selected path from previous call
	if ~isempty(PreviousPathName) % default path available?
		if nargin>0
			varargin{1}=[PreviousPathName varargin{1}]; % append path to
			% FilterSpec
		else
			varargin={PreviousPathName}; % use path as new FilterSpec
		end
	end

	[FileName PathName]=uigetfile(varargin{:}); % call uigetfile()
	if PathName
		PreviousPathName=PathName; % save path for further calls
	end
end