2016-07-13 10 views
-1

Ich möchte eine GUI machen, in dem eine Schaltfläche gedrückt wird, wird nach einer Datei/Ordner suchen und wenn es tut, wird es diesen Pfad zu geben eine andere Funktion, die einige Bearbeitungen durchführt, nachdem sie einen Pfad erhalten haben. Bisher habe ich dieseWie Pfad des Ordners zu bekommen und diesen Pfad zu einer separaten Funktion in Matlab

function pushbutton2_Callback(hObject, eventdata, handles) 
.... 
.... 

folder_name=uigetdir('File Selector'); 

Diese den Ordner durchsuchen und jetzt möchte ich den Pfad des Ordners an diese Funktion

source_dir = 'here the path of that folder comes'; 
source_files = dir(fullfile(source_dir, '*.txt/etc')); 

Mit anderen Worten, wenn ich erklären, dass Taster I verwendet beginnt mit der Ausführung Diese Funktion wählt jedoch zuerst eine Datei/ein Verzeichnis aus, das in diese Funktion eingegeben werden soll. Ich habe versucht, einige Beispiele zu verwenden, aber ich bin neu in der Gui-Erstellung, also bin ich noch nicht erfolgreich. Jede Hilfe wird geschätzt. Vielen Dank.

bearbeiten ..

Das ist, was ich tun wollte.

function pushbutton2_Callback(hObject, eventdata, handles) 
... 
folder_name=uigetdir('File Selector'); 
global folder_path 
folder_path=genpath(folder_name); 

%% ftn wo es

function abc %% this function is also called in another function. 

global folder_path 

source_dir = folder_path; %%% where all the files are placed 
src_files = dir(fullfile(source_dir, '*.txt')); 

dann eine Schleife verwendet werden, werden alle Dateien

+0

Es ist nicht ganz klar zu laden, was genau das Problem ist. Soll der Pfad in 'folder_name' als Argument für eine Funktion übergeben werden? Wie sieht diese Funktion aus? Wo hast du es definiert? Etwas mehr Code wäre hilfreich ... – bushmills

+0

@bushmills meine Absicht ist, einen Ordnerpfad in folder_name zu erhalten und diesen Pfad zu source_dir zu geben. Ich habe versucht, den Pfad dieses Ordners als eine globale Variable zu machen und diese globale Variable in das source_dir zu übergeben, aber es funktioniert nicht. Zuerst habe ich den Pfad in source_dir manuell angegeben wie 'c: \ blah \ blah', aber jetzt mache ich eine GUI, in der eine Drucktaste den Ordner auswählt und den Pfad dieses Ordners in diese Funktion übergibt, die dann gestartet wird. – Muhammad

+0

Sie möchten also Folgendes tun: 1. Holen Sie sich einen Ordnerpfad und speichern Sie ihn unter 'Ordnername'; 2. Übergeben Sie 'folder_name' an eine Funktion, die in der Pushbutton-Callback-Funktion aufgerufen wird? 3. Übergeben Sie die Zeichenfolge 'folder_name' an' source_dir'. Ist das korrekt? – bushmills

Antwort

0
function pushbutton2_Callback(hObject, eventdata, handles) 

folder_name=uigetdir('File Selector'); 

listFiles(folder_name); 

end 

% put this function in the generated m-file 
function listFiles(folder_name) 

source_files = dir(fullfile(folder_name, '*.txt/etc')); 

% do something with the files 

end 
+0

es funktioniert nicht erhalten diesen Fehler "Undefinierte Funktion 'listFiles' für Eingabeargumente vom Typ 'char'." Gibt es irgendeinen Weg, wie wir es global machen können? Ich setze über das, was ich versucht habe zu verwenden. – Muhammad

+0

müssen Sie alle Funktionen in eine m-Datei einfügen, so dass Sie nicht den undefinierten Funktionsfehler erhalten. Verwenden Sie keine globalen Variablen, wenn dies nicht erforderlich ist. Zum Beispiel sind versehentliche Änderungen an globalen Variablen oft die Ursache für Fehler, die sehr schwer zu finden sind. – bushmills

+0

Ich habe es erneut versucht, indem ich Pfadnamen als globale Variable definiert habe und jetzt funktioniert. Sie haben Recht, globale Varaibles sind keine gute Wahl, aber in meiner Situation werden sie nicht immer wieder verwendet, nur um den Dateinamen zu speichern und ihn einmal an eine andere Funktion zu übergeben. – Muhammad

Verwandte Themen