के साथ गायब हो जाता है मैं गाइड का उपयोग कर एक सीधा MATLAB GUI बना रहा हूं। मेरे पास वस्तुओं का एक सूची बॉक्स है। अधिकांश समय, यह के रूप में की उम्मीद काम करता है, लेकिन कभी कभी (आमतौर पर के बाद मैं गाइड के साथ आंकड़ा संपादित) लिस्टबॉक्स पॉप्युलेट इसे गायब करने का कारण बनता है, इस संदेश के साथ:MATLAB GUIDE gui listbox अप्रत्याशित रूप से अप्रचलित त्रुटि
Warning: single-selection listbox control requires a scalar Value
Control will not be rendered until all of its parameter values are valid
यह व्यवहार डिबगिंग खारिज कर देता है! जब मैं आगे बढ़ता हूं, यह अपेक्षा के अनुसार काम करता है (मुझे संदेह है कि यह एक तरह की धागा दौड़ या कुछ है)। इसके अलावा, यह आमतौर पर समान स्थितियों के तहत MATLAB पर्यावरण को पुनरारंभ करने के बाद चला जाता है।
इस त्रुटि पर मिले सभी दस्तावेज MATLAB के पिछले/प्राचीन संस्करणों (मैं R2010a का उपयोग कर रहा हूं) का संदर्भ देता हूं।
इस विषय पर किसी भी विचार या जानकारी की सराहना की जाएगी!
संपादित करें: मिखाइल के लिए धन्यवाद, मुझे समस्या हल हो गई है। मैं भविष्य में संदर्भ के लिए यहां अपना कोड पोस्ट कर रहा हूं।
डीबग प्रिंटिंग और जंगली क्लिकिंग के बहुत सारे बाद, मैंने पाया कि कभी-कभी जब आप सूची बॉक्स से पूछते हैं कि क्या चुना जाता है, तो आपको खाली परिणाम मिलता है। यह और अन्य समस्याओं ने चीजों को गड़बड़ कर दिया। मैंने लिस्टबॉक्स में मेरी सभी लेखन इंटरैक्शन को केंद्रीकृत फ़ंक्शन में ले जाया, और मैंने कुछ परीक्षण कोड लिखा ताकि यह सुनिश्चित किया जा सके कि चीजें जिस तरह से रहें।
कृपया ध्यान दें कि यह मेरे अपने पर्यावरण (R2010a पर) का परीक्षण किया गया है और बड़े पैमाने पर नहीं। इसके अलावा, कोड थोड़ा अनावश्यक है, लेकिन यह मुझे वैसे भी अच्छा महसूस कर रहा है। (यानी। itemcount
0 से कम नहीं हो सकता है ...)
function ensure_listbox_ok(handles)
%check to make sure it does not suck - ask what it has
thestrings = get(handles.listbox_files, 'String');
selection = get(handles.listbox_files, 'Value');
itemcount = length(thestrings);
betterselection = selection;
if(itemcount <= 0)
betterselection = 1;
else
if(selection > itemcount)
betterselection = itemcount;
end
end
%never use zero!!!! even if 1 is out of bounds.
if(isempty(betterselection) || betterselection <= 0)
betterselection = 1;
end
%uncomment for debug logging
%display(['Was: ' num2str(selection) ', cleaned: ' num2str(betterselection)]);
%update if we are out of bounds.
if(isempty(selection) || betterselection ~= selection)
set(handles.listbox_files, 'Value', betterselection);
end
हाय मिखाइल, उत्तर देने के लिए धन्यवाद! मुझे अभी भी अधिक जानकारी चाहिए। आप कहते हैं कि सूची बॉक्स डिफ़ॉल्ट रूप से खाली है लेकिन खाली नहीं होना चाहिए ... यह कैसे काम करता है ?? यह कभी-कभी मेरे लिए कैसे काम करता है, लेकिन हर समय नहीं? मैं इस त्रुटि को कैसे डीबग नहीं कर सकता? मुझे पूरा यकीन है कि मैं इस यूरिकंट्रोल के लिए सभी दिशानिर्देशों का पालन करता हूं, और फिर भी यह समान स्थितियों के तहत मेरे ऊपर कुछ दुर्घटनाग्रस्त हो जाता है। मदद के लिए शुक्रिया! – eli
महान युक्तियों के लिए धन्यवाद। आप इस तरह की चीज़ के साथ स्पष्ट रूप से बहुत अनुभवी हैं। आपने मुझे सही दिशा में इंगित किया, और अब मैं सूची बॉक्स चीजों को और अधिक सावधानीपूर्वक करता हूं। मैं अपने कोड के साथ एक और जवाब पोस्ट कर रहा हूं, लेकिन आपको पुरस्कार मिलता है =) – eli