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

Handles als Zwischenspeicher richtig deklarieren?

 

schlierfmi
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 14.03.12
Wohnort: München
Version: R2011a
     Beitrag Verfasst am: 15.03.2012, 11:09     Titel: Handles als Zwischenspeicher richtig deklarieren?
  Antworten mit Zitat      
hallo liebe Matlaber!
Bisher habe ich Werte immer an Eingabeparameter vom Propertyinspector übergeben zB
Code:
set(handles.edit1, 'String', vollstaendigeAngabe)

und mit get-Befehl wieder ausgelesen.

Jetzt brauch ich aber als Zwischenspeicher ein zusätzliches struct, der als Speicher dient von dem der Benutzer aber nichts mitkriegen soll.

habe schon die Hilfe und sämtliche Forenbeiträge durchstöbert leider hat es mir nur unzureichend geholfen.

Ich weiß, dass es die Möglichkeit gibt mit "guidata" neue handles zu deklarieren
habs mal so probiert
Code:
handles.Dateiname = name;
    guidata(hObject,handles)


wie deklariere ich es richtig und wie kann ich von einer anderen Funktion darauf zu greifen?
zB:
Code:
get(handles.edit1, 'String');
funktioniert ja nur bei den Standard eingabeparametern oder?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

du kannst dann direkt auf die zusätzlichen Felder der Handles-Struktur zugreifen, in deinem Fall z.B.
Code:
handles.dateiname


Für die Speicherung "kleiner" Informationen kannst du übrigens auch die Eigenschaft 'Userdata' verwenden, und wie gewohnt mit set/get arbeiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
schlierfmi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 14.03.12
Wohnort: München
Version: R2011a
     Beitrag Verfasst am: 15.03.2012, 11:54     Titel:
  Antworten mit Zitat      
danke schon mal, Harald!
Problem: in handles.Dateiname soll aber ein string gespeichert werden.
habe das jetzt so probiert

Funktion die Dateiname speichert:
Code:
NameinZahl=str2double(name)
    handles.Dateiname=hObject;
    handles.Dateiname=NameinZahl;
    guidata(hObject, handles);


Abruf des Dateinamens:
Code:

DateinameZ=handles.Dateiname;
Dateiname=num2str(DateinameZ);


funktioniert aber leider nicht..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 12:40     Titel:
  Antworten mit Zitat      
Hallo,

was funktioniert nicht? Gibt es eine Fehlermeldung? Unerwartete Resultate? Welche?

Wenn ein String gespeichert werden soll, warum wandelst du dann zuvor in Double um?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
schlierfmi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 14.03.12
Wohnort: München
Version: R2011a
     Beitrag Verfasst am: 15.03.2012, 13:05     Titel:
  Antworten mit Zitat      
HIer ein Ausschnitt:
Code:

function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[name,pfad] = uigetfile('*.exe', 'Bitte gewünschte Datei auswählen', 'exeDatei');
%global name;

if isequal(name,0) || isequal(pfad,0)
       set(handles.edit1, 'String', 'Bitte Datei auswählen')
    else
    vollstaendigeAngabe=[pfad,name];
    set(handles.edit1, 'String', vollstaendigeAngabe)
    handles.Dateiname = 0;
    handles.Dateiname=hObject;
    handles.Dateiname=name
    guidata(hObject, handles);
end

%jetzt die andere Funktion
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
Dateinameupfad=get(handles.edit1, 'String');
Dateiname=handles.Dateiname;
IAnzahl=get(handles.edit4, 'String');
disp(Dateiname)


Er gibt mir in Matlab "NaN" für Dateiname aus.
Ich denke das liegt an der Art der Speicherung, ist es nicht falsch einen str direkt mit "=" in ein handle zu speichern, das Programm speichert doch dann ein double ab. Deswegen auch der Versuch es umzuwandeln..

Die Handles, die die grafischen Objekte betreffen muss man ja auch mit der get und set funktion ansteuern um die strings reinzuschreiben?

name ist also ein string und soll in dieses struct.
Dieser string soll nach dieser Zwischenspeicherung von einer anderen Funktion verwendet werden.

Grüße Michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.03.2012, 14:02     Titel:
  Antworten mit Zitat      
Hallo,

diese Zeilen sind überflüssig, sollten aber keinen Schaden anrichten.
Code:
   handles.Dateiname = 0;
    handles.Dateiname=hObject;


Mich erstaunt sehr, dass da NaN kommt. Meine Vermutung ist, dass du noch irgendeine (nicht sinnvolle) Konvertierung nach Double in deinem Code hast, oder den Code nicht gespeichert hast.
Sicherheitshalber sollte man die GUI auch schließen und wieder neu starten, wenn man Änderungen am Code vorgenommen hat.
Aus deinem Code heraus ist das NaN für mich jedenfalls nicht erklärlich.

Für die Erzeugung der Variable vollstaendigeAngabe würde ich übrigens FULLFILE verwenden, sonst fehlt evtl. das Pfadtrennzeichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
schlierfmi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 14.03.12
Wohnort: München
Version: R2011a
     Beitrag Verfasst am: 15.03.2012, 14:06     Titel:
  Antworten mit Zitat      
könnte man hier mit set/getappdata arbeiten?

oder bin ich da am falschen Dampfer?
Private Nachricht senden Benutzer-Profile anzeigen
 
schlierfmi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 14.03.12
Wohnort: München
Version: R2011a
     Beitrag Verfasst am: 15.03.2012, 14:22     Titel:
  Antworten mit Zitat      
Okay es funktioniert jetzt Smile , wahrscheinlich war irgendwo noch ein anderer Fehler drin

Danke für die Hilfe
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 - 2025 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.