में मैं निम्नलिखित बैच स्क्रिप्ट हैपढ़ें कार्यक्रम STDIN डेल्फी
और कार्यक्रम इस स्रोत (कम या ज्यादा) है:
procedure TForm1.FormCreate(Sender: TObject);
var buff: String;
begin
Read(buff);
Memo1.Lines.Text:=buff;
end;
और ज्ञापन में उत्पादन होता है:
ड्राइव सी में वॉल्यूम में कोई लेबल नहीं है।
मैंने कोशिश की:
- एक शर्त के रूप
eof
के साथ एक पाश में पढ़ने हिस्सा डाल - किसी भी तरह अनंत लूप - एक पाश लेखन पढ़ने रखने के लिए जब तक
strlen(buff)
0 है पैदा कर रहा है - यह बाहर निकल जाता है कुछ कारणों के लिए दूसरी बार - कभी भी 0.5 सेकंड पढ़ने वाली सामग्री (मैं एसिंक्रोनस स्टडीन को लिखने के बारे में सोच रहा था), यह असफल रहा
वैसे, कार्यक्रम सीधे चल रहा है, stdin डेटा के बिना, एक EInputOutput अपवाद (आई/ओ त्रुटि) कोड का कारण बनता है 6.
ठीक है, यह अच्छी तरह से काम करता है! क्या मैं 'गणना
Christian
हां, बस गणना <आकार (बफर) तक पढ़ना जारी रखें। ध्यान दें कि बफर आवश्यक रूप से शून्य-समाप्त नहीं है, इसलिए उदा। बफर जोड़ने के लिए एक TMemoryStream और अंत में अंत में # 0 जोड़ें, ताकि आप इसे एक स्ट्रिंग के रूप में पढ़ सकें। –
हो गया। एक जादू की तरह काम करता है! – Christian