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

edit lesen, speichern und wieder ausgeben

 

MM
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 03.06.2012, 13:26     Titel: edit lesen, speichern und wieder ausgeben
  Antworten mit Zitat      
Hey,

in meiner Gui gibt es mehrere edit Felder. In die Zahlen und Wörter eingetragen werden können.
Nach dem Anklicken eines Buttons sollen die Werte übernommen werden.
Da der Button öfters gedrückt werden kann, sollen bei jedem Speichern die Werte in der nächsten Zeile des Arrays gespeichert werden.
Später soll aus dem Array der entsprechende Wert rausgesucht werden und dann wieder in dem edit Feld angezeigt werden.

In den Feldern mit Zahlen funktioniert das wunderbar.
Hier kurz ein wenig Quellcode zum Verständnis:

Code:

Uoc = str2double(get(handles.edit2,'String'));    % Einlesen
handles.Uoc(handles.k_zaehler) = Uoc;             % im globalen Array speichern
set(handles.edit2,'String' , handles.Uoc(x));       % aus dem globalen Array ins edit Feld schreiben
 


Meine Frage jetzt, wie muss ich vorgehen, wenn in dem edit Feld ein Wort und keine Zahl steht?
Habe versucht das str2double wegzulassen, aber dann gibts Probleme bei dem set-Befehl...

vg,
Malte
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: 03.06.2012, 14:09     Titel: Re: edit lesen, speichern und wieder ausgeben
  Antworten mit Zitat      
Hallo MM,

Das ist merkwürdig. Eigentlich sollte der SET Befehl scheitern, wenn Du versuchst eine Zahl in das String-Feld zu schreiben, während dies mit einem String funktionieren sollte. Allerdings müssen die Strings als Cell-String gespeichert werden - machst Du das?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 03.06.2012, 14:19     Titel:
  Antworten mit Zitat      
Hey Jan,

ich benutze nur die 3 unten aufgeführte Befehle.
und den einen Handler habe ich am Anfang wie folgt deklariert:

Code:

% Leerlaufspannung (STC)
handles.Uoc(5)   = hObject;
handles.Uoc(5)   = 0;
 
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: 03.06.2012, 22:53     Titel:
  Antworten mit Zitat      
Hallo MM,

Das verstehe ich nicht. Wieso überschreibst Du den Inhalt von "handles.Uoc(5)" mit einer 0, nachdem du ihn zuerst auf hObject gesetzt hast? Und was hat dies mit der Frage oder meiner Rückfrage zu tun?

Bitte poste den relevanten Code und beschreibe, was "dann gibts Probleme bei dem set-Befehl... " genau bedeutet. Eine Kopie der Fehlermeldung könnte hilfreich sein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 04.06.2012, 09:40     Titel:
  Antworten mit Zitat      
hey,

ich versuch nochmal die entscheidenden Stellen aus dem Code darzustellen, ansonsten würde es hier wahrscheinlich etwas lang und unübersichtlich werden.

Code:

% in der OpeningFcn
handles.name(5)  = hObject;
% ---------------------------------
% in der Button_Callback
name = get(handles.edit1,'String');
handles.name(handles.k_zaehler) = name;
% ---------------------------------
% in der listbox1_Callback
set(handles.edit1,'String' , handles.name(x));
 


Hier die Fehlermeldung:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> Bedienungs>Button_Callback at 168
handles.name(handles.k_zaehler) = name;

vg,
Malte
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.06.2012, 16:18     Titel:
  Antworten mit Zitat      
Hallo
beschreibe mal was du bezwecken willst?
Weil dein Vorgehen ist hier nicht klar, was willst in dem Feld "NAME" denn speichern? Doublewerte? Handles? Strings? aber nicht alles doch zusammen.
Der Fehler tritt auf, weil du zwei Unterschiedliche Datentypen ablegen möchtest.
Code:

% also zuerst kommt
% hObject ist Double Wert
handles.name(5) =  hObject
%
% an anderen Stelle versuchst du String zuzuweisen, also eine Zeichenkette,  das automatisch zu double(siehe ASCII) konvertiert, wird, deshalb werden an eine Stelle mehrere Werte reinzusetzen versucht

% double('string') entspricht Zahlen  [115   116   114   105   110   103]
handles.name(10) = 'string';
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 04.06.2012, 16:29     Titel:
  Antworten mit Zitat      
hey,

ich möchte einen string aus dem edit feld in einer variable speichern.
diese variable wird in einer anderen funktion benutzt, um den dadrin gespeicherten string wieder in dem edit feld auszugeben.

es kann sein das z.b. 3 strings nacheinander gespeichert werden.
daher wollte ich ein array benutzen und immer eine zeile dranhängen mit dem neuen string.

bei der ausgabe suche ich mir die entsprechende zeile raus und möchte diese dann im edit feld anzeigen.

hatte bisher probleme mit globalen variablen oder wie man das in matlab bezeichnet.
hatte daher bei zahlen immer ein handles definiert. damit kam ich bisher auch gut zu recht. bei strings scheint dies nicht zu funktionieren...

vg,
Malte
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.06.2012, 17:10     Titel:
  Antworten mit Zitat      
Für Strings sollte man eine CELL nutzen
Code:

A = cell(1,1)
A{1} ='string1'
A{2}= 'string2'
 
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 04.06.2012, 17:19     Titel:
  Antworten mit Zitat      
ok. das schon mal ne gute Info.

und wie kann ich diese variable in 2 funktionen benutzen.

in dieser function Button_Callback(hObject, eventdata, handles) schreibe ich
Code:
name{1} = get(handles.edit1,'String');


und wenn ich in dieser function listbox1_Callback(hObject, eventdata, handles) auf die variable zugreifen will
Code:
set(handles.edit1,'String' , name{1});


bekomme ich folgende fehlermeldung:
??? Undefined variable name.

Error in ==> Bedienungs>listbox1_Callback at 332
set(handles.edit1,'String' , name{1});

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> Bedienungs at 52
gui_mainfcn(gui_State, varargin{:});

Error in ==>
@(hObject,eventdata)Bedienungs('listbox1_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.06.2012, 17:22     Titel:
  Antworten mit Zitat      
Nein dass muss auf dein ursprünglichen Code beziehen:

Code:
% in der OpeningFcn
handles.name  = cell(1,1);
% ---------------------------------
% in der Button_Callback
name = get(handles.edit1,'String');
handles.name{handles.k_zaehler} = name;
% ---------------------------------
% in der listbox1_Callback
set(handles.edit1,'String' , handles.name{x});
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 04.06.2012, 21:45     Titel:
  Antworten mit Zitat      
vielen Dank! hat funktioniert...

noch ne kurze frage:
was gebe ich bei cell mit den beiden argumenten in den klammern an? (1,1)
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 05.06.2012, 13:06     Titel:
  Antworten mit Zitat      
Hallo
CELL erzeugt leere Cells. Damit kannst du deine Cell initialisieren, wenn du genauere Anzahl kennst, dann kannst, die Länge vorgeben
Sonst lese dazu doku
Private Nachricht senden Benutzer-Profile anzeigen
 
MM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 05.06.2012, 13:08     Titel:
  Antworten mit Zitat      
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.