Тема: Читання вхідних даних з stdin на Pascal (FreePascal)
Підкажіть, будь ласка, як "піймати" дані з потоку stdin в Pascal (на даний момент цікавить під Windows) ?. Причому у випадку відсутності даних, програма не повинна їх очікувати а продовжити роботу далі. Наприклад, маємо якусь програму, назвемо її test.exe, необхідно вихідні дані іншої програми перенаправити нашій через stdin, ну хоча б так:
echo 12345 | test.exe
а ще цікавіше масив даних:
echo 1 2 3 4 5 | test.exe
В test.exe необхідно отримати ці "12345" (чи масив "1", "2", .... ), якщо ж їх немає -- продовжити роботу без очікування.
Read(var), Readln(var) чи Read(var1,var2,var3) не працюють , тим більше що вони очікують вводу даних.
Спробував під Linux. Тут краще:
var s1,s2,s3,s4,s5:string;
BEGIN
Readln(s1,s2,s3,s4,s5);
Writeln('var_1: ',s1);
Writeln('var_2: ',s2);
Writeln('var_3: ',s3);
Writeln('var_4: ',s4);
Writeln('var_5: ',s5);
END.
тільки передача даних, наприклад таким чином:
echo 1 2 3 4 5 | ./test
заганяє усе в змінну "s1", тобто s1 = "1 2 3 4 5".
Це не страшно -- можна самостійно розібрати рядок на окремі параметри. Також програма не очікує вводу коли їй передати пусте значення:
echo | ./test
Але, звісно, очікує коли запустити ./test безпосередньо. Тому попутно іще таке питання: чи можливо перевірити наявність в stdin даних, перед тим як їх прочитати ?
І таки чому не працює під Windows ?