मैं मैन्युअल रूप से पहले खाली स्थान के दर्ज किए बिनाएडीए: एक स्ट्रिंग (1..10) के लिए उपयोगकर्ता इनपुट हो रही है और रिक्त स्थान को
subtype String10 is String(1..10);
और मैं इसे करने के लिए कीबोर्ड इनपुट प्राप्त करने का प्रयास कर रहा हूँ को परिभाषित किया है के साथ आराम भरने प्रवेश मारना मैंने get_line() की कोशिश की लेकिन किसी कारण से यह वास्तव में get put() कमांड को आउटपुट करने से पहले इनपुट के लिए इंतजार नहीं करेगा, और मुझे यह भी लगता है कि यह पहले स्ट्रिंग में जो भी था उसे छोड़ देगा और इसे सफेद स्पेस से भर नहीं देगा।
मुझे पता है और Bounded_String और Unbounded_String का उपयोग किया है, लेकिन मुझे आश्चर्य है कि यह काम करने का कोई तरीका है या नहीं।
मैं इसके लिए एक समारोह बनाने की कोशिश की है:
--getString10--
procedure getString10(s : string10) is
c : character;
k : integer;
begin
for i in integer range 1..10 loop
get(c);
if Ada.Text_IO.End_Of_Line = false then
s(i) := c;
else
k := i;
exit;
end if;
end loop;
for i in integer range k..10 loop
s(i) := ' ';
end loop;
end getString10;
लेकिन, यहाँ, मुझे पता है s(i)
काम नहीं करता है, और मुझे नहीं लगता
"if Ada.Text_IO.End_Of_Line = false then"
क्या करता है मुझे उम्मीद है कि यह या तो करेगा। यह सिर्फ एक प्लेसहोल्डर है जबकि मैं इसे करने का वास्तविक तरीका ढूंढता हूं।
मैं अब कुछ घंटों के लिए खोज रहा हूं, लेकिन एडी दस्तावेज अन्य भाषाओं के रूप में उपलब्ध या स्पष्ट नहीं है। मुझे स्ट्रिंग प्राप्त करने के बारे में बहुत कुछ मिला है, लेकिन जो मैं ढूंढ रहा हूं वह नहीं।
'सत्य' और 'झूठी' के समानता तुलना विशेष रूप से स्पष्ट नहीं हैं। 'अगर Ada.Text_IO.End_Of_Line = false तो' की बजाय, बस लिखें, अगर Ada.Text_IO.End_Of_Line तो 'लिखें। (हालांकि मुझे नहीं लगता कि आपको वैसे भी 'End_Of_Line' का उपयोग करने की आवश्यकता है।) –