WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Datei aus Listbox auswählen

 

newmatlabuser123
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 30.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2015, 18:51     Titel: Datei aus Listbox auswählen
  Antworten mit Zitat      
Hallo!
Mit meinem GUI will ich Dateien eines Ordners anzeigen und dann eine einzelne Datei per Doppelclick mit der Maus auswählen und öffnen. Das Auswählen der Datei funktioniert allerdings nur, wenn m-file und die auszuwählende Datei im gleichen Ordner liegen. Sobald diese nicht im gleichen Ordner sind, kommt die Fehlermeldung: "Undefined function 'untitled' for input arguments of type 'struct'". Hat jemand einen Tipp, wie ich eine Datei aus der Listbox auswählen kann, auch wenn m-file und Datei nicht im gleichen Ordner gespeichert sind?

Danke

Hier der Code:
Code:
function varargout = untitled(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @untitled_OpeningFcn, ...
                   'gui_OutputFcn',  @untitled_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);

function selectFolder_Callback(hObject, eventdata, handles)
path = uigetdir(pwd,'Select folder')
        load_listbox(path,handles)
        guidata(hObject, handles);% Populate the listbox
load_listbox(pwd,handles)

function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

function listbox1_Callback(hObject, eventdata, handles)
get(handles.figure4,'SelectionType');
if strcmp(get(handles.figure4,'SelectionType'),'open')
    index_selected = get(handles.listbox1,'Value');
    file_list = get(handles.listbox1,'String');
    filename = file_list{index_selected};
    if  handles.is_dir(handles.sorted_index(index_selected))
        cd (filename)
        load_listbox(pwd,handles)
    else
        [path,name,ext] = fileparts(filename)
         fid=fopen(filename);
        tline1 = fgets(fid);
        strfind(tline1, 'New distance recognition');
        tline2 = fgets(fid);
        strfind(tline2, 'New distance recognition');
        tline3 = fgets(fid);
        strfind(tline3, 'New distance recognition');
        c = textscan(fid, [repmat('%f', 1, 8) '%*[^\n]'], 'headerlines', 6, 'delimiter', '\t');
        data = cell2mat(c);
        fclose(fid);
%1) Extract Data    
        x_raw = data(:,2)
        F_raw = data(:,3);
        handles.x_raw = x_raw;
        handles.F_raw = F_raw;
        guidata(hObject,handles);
                            end
end

function load_listbox(dir_path,handles)
cd (dir_path)
dir_struct = dir(dir_path);
[sorted_names,sorted_index] = sortrows({dir_struct.name}');
handles.file_names = sorted_names;
handles.is_dir = [dir_struct.isdir];
handles.sorted_index = sorted_index;
guidata(handles.figure4,handles)
set(handles.listbox1,'String',handles.file_names,...
   'Value',1)

function listbox1_CreateFcn(hObject, eventdata, handles)

usewhitebg = 1;
if usewhitebg
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

function figure4_CreateFcn(hObject, eventdata, handles)
setappdata(hObject, 'StartPath', pwd);
addpath(pwd);

function figure4_DeleteFcn(hObject, eventdata, ~)
if isappdata(hObject, 'StartPath')
    rmpath(getappdata(hObject, 'StartPath'));
end


P.S. der Code ist größtenteils aus dem Mathworks Beispiel "Interactive List Box in a GUIDE GUI"
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.01.2015, 16:44     Titel: Re: Datei aus Listbox auswählen
  Antworten mit Zitat      
Hallo newmatlabuser123,

Das Problem ist, dass das Programm mit dem CD-Befehl in einen anderen Ordner wechselt. Das ist einerseits unnötig, weil man das File auch laden kann, wenn man den vollständigen Pfad angibt. Andererseits wäre es trotzdem kein Problem, wenn der Pfad des M-Files im Matlab Path eingetragen wäre. Dann würde Matlab es auch wiederfinden. Siehe "pathtool" und suche in der Dokumentation nach "PATH".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.