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

inputdlg blockiert matlab

 

Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2014, 17:02     Titel: inputdlg blockiert matlab
  Antworten mit Zitat      
Hallo zusammen,

ich habe aktuell ein Problem mit der "inputdlg" Funktion. Und zwar führt Matlab eine von mir gewollte Ausgabe im Command Window durch, die ziemlich lang ist.

Nun möchte ich, dass der Anwender eine bestimmte Eingabe aus dem Command Window in das von mir vorgestellte Abfragefeld eintippt. Das funktioniert auch alles, nur ist die Liste so lang, dass der Anwender unter Umständen im Command Window scrollen muss, dies wird jedoch von der "inputdlg" Funktion verhindert wird. Die Funktion "inputdlg" bedient sich der "uiwait" Funktion.

Wie kann ich innerhalb der "inputdlg" Funktion die "uiwait" Funktion umgehen?

Gibt es vielleicht eine andere Lösung?

Hier der Code:

Code:
uiwait(msgbox('Bitte geben Sie eine Devicenummer aus der Liste im Command Window ein!', 'Soundkarteninfo'));
                         Answer = inputdlg('Bitte Devicenummer eintragen (z.B.: 22)','Suche',1);
                         AnswerStatus = cell2mat(Answer);
                          if isempty(AnswerStatus) == 0
                             AnswerStatus = str2num (AnswerStatus);
                             Notfound2 = 1;
                             while Notfound2 == 1
                                 for i=1:size(MsoundInfo_Struct,1)
                                    if MsoundInfo_Struct(i).id == AnswerStatus
                                        Status = 3;
                                        DeviceID = MsoundInfo_Struct(i).id;
                                        OutChan  = MsoundInfo_Struct(i).outputs;
                                        uiwait(msgbox('Die Devicenummer wurde gefunden!', 'Soundkarteninfo'));
                                        Notfound2 = 0;
                                        break
                                    end
                                 end

                                 if Notfound2 == 1
                                     Answer = inputdlg('Die Devicenummer wurde nicht gefunden. Bitte geben Sie eine andere Devicenummer ein!', 'Soundkarteninfo');
                                     Answer = str2double(Answer{1,1});
                                 end % if
                             end % while
                         else
                             msgString = strcat('Die Devicenummer wurde nicht geändert! Die verwendete Devicenummer lautet: ', num2str(MsoundInfo_Struct(i).id),'.');
                             uiwait(msgbox(msgString, 'Soundkarteninfo'));
                         end % if


Vielen Dank schon mal!


Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2014, 12:02     Titel:
  Antworten mit Zitat      
Gibt es hierfür nicht mal ein Tipp, wie ich es vielleicht anders lösen könnte?

Schade... Sad
 
Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2014, 14:04     Titel:
  Antworten mit Zitat      
Ich frage mich weshalb ich keine Antwort bekomme. Ist die Frage nicht verständlich genug formuliert oder gibt es wirklich keine andere Möglichkeit das Problem zu umgehen.

Ein Lösungsansatz wäre eine eigene GUI speziell für diesen Fall zu konzipieren. Ist aber ziemlich umständlich. Es wäre super, wenn ich einfacher ans Ziel kommen könnte.
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 20.11.2014, 14:17     Titel:
  Antworten mit Zitat      
Ich weiß die Antwort darauf leider auch nicht. Es kann bei den vielen Threads aber schon mal passieren, dass etwas untergeht. An deiner Fragestellung liegt es sicherlich nicht. Problemstellung ist eindeutig!

Aber mal als Vorschlag...statt einen

Code:


nehmen, dort die Auswahlmöglichkeiten anzeigen und auf die Auswahl warten.

Dann müsste man nicht im Command window suchen und auch die Auswahl im Gegensatz zu einer Eingabe nicht auf ihre Gültigkeit hin überprüfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 20.11.2014, 14:35     Titel:
  Antworten mit Zitat      
Zitat:

Wie kann ich innerhalb der "inputdlg" Funktion die "uiwait" Funktion umgehen?


Abhängig von der Applikation kann der einfachste Weg sein inputdlg.m unter anderem Namen wie z.B. my_inputdlg.m ins Arbeitsverzeichnis zu speichern, zu modifizieren und dann halt die Modifikation zu benutzen. Also in diesem Fall vielleicht uiwait auszukommentieren.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 20.11.2014, 14:39     Titel:
  Antworten mit Zitat      
Noch was Prozedurales. Ich schätze gomatlab.de sehr. Es ist m.E. zusammen mit der chinesischsprachigen Community ilovematlab.cn die Beste nicht-Englischsprachige Community weltweit. Aber wer in deutscher Sprache in eine Community posted erreicht schlicht und einfach nur 5% der Nutzerbasis als wenn man es Englisch tut.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2014, 16:00     Titel:
  Antworten mit Zitat      
Hallo Andreas,

vielen Dank für deine sehr gut dargestellte Hilfestellung, aber auch für die letzte Anmerkung!

Gerade wollte ich meine Lösung schreiben und siehe da, sie steht schon. Smile

Ich konnte das Problem mittels der 'listdlg' Funktion umgehen.

Falls jemand die Lösung als Code sehen möchte:

Code:

ID         =   [];
Outputs =   [];
for ii = 1:size(MsoundInfo_Struct,1)

ListStr{ii,1} =     [MsoundInfo_Struct(ii,1).name,'_ID:',num2str(MsoundInfo_Struct(ii,1).id),' Outputs:',num2str(MsoundInfo_Struct(ii,1).outputs), ' Samplerate:', num2str(MsoundInfo_Struct(ii,1).samplerate)];

 ID         = [ID MsoundInfo_Struct(ii,1).id];
 Outputs = [Outputs MsoundInfo_Struct(ii,1).id];
 end
             
IdOutMatrix =[ID' Outputs'];

[Selection,ok] = listdlg('PromptString','Select a file:',...
                        'SelectionMode','single',...
                        'ListSize', [500 300],...
                        'ListString',ListStr);
                   
if isempty(Selection) == 0 && isempty(ok) == 0
      DeviceID = IdOutMatrix(Selection,1);
      OutChan  = IdOutMatrix(Selection,2);
else
      DeviceID = MsoundInfo_Struct(i).id;
      OutChan  = MsoundInfo_Struct(i).outputs;
   
      msgString = ['Die Devicenummer wurde nicht geändert! Die verwendete Devicenummer lautet: ', num2str(DeviceID),'.'];
      uiwait(msgbox(msgString, 'Soundkarteninfo'));

end
 


Vielen Dank nochmals!
 
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.