Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 20:33   #1
roman_azn
 
Регистрация: 15.05.2012
Сообщений: 6
По умолчанию Вопрос по DOSу. Вывод программы одновременно на экран и в файл

Написал програмку в паскале для расчета машинки, и хочу, чтобы через дос ее запускать и она одновременно работала на экране и все с экрана скидывалось в файл. писал в досе так:"proba.exe >d:\1.txt" но тогда все скидывается в файл, но не показывается на экране. Как сделать чтоб и туда и туда? И еще вопросик туда-же: как сделать, чтоб в том текстовом файле результаты сохранялись на русском языке(они крокозябрами печатаются) и чтоб он разрывы строк делал, а то печатает все подряд.
Заранее спасибо)

Последний раз редактировалось roman_azn; 15.05.2012 в 20:43. Причина: Некорректный заголовок был
roman_azn вне форума Ответить с цитированием
Старый 15.05.2012, 21:21   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от roman_azn Посмотреть сообщение
Как сделать чтоб и туда и туда?
Проще всего двумя операторами: один выводит на экран, другой - в файл.
Альтернативное решение - самому делать консоль с нужными свойствами.
Цитата:
И еще вопросик туда-же: как сделать, чтоб в том текстовом файле результаты сохранялись на русском языке(они крокозябрами печатаются)
Кракозябры в файле - это конкретный просмотрщик файла показывает его не в той кодировке.
Проще всего - сменить просмотрщик, которым смотрите файлы.
Ну, либо перекодировать перед выводом (если писать свою консоль, то эту задачу можно возложить на нее.)
Цитата:
и чтоб он разрывы строк делал, а то печатает все подряд.
Заранее спасибо)
Это зависит исключительно от Вас - как будете выводить, так и будет.
Либо опять проблемы с просмотрщиком.
s-andriano вне форума Ответить с цитированием
Старый 16.05.2012, 10:34   #3
roman_azn
 
Регистрация: 15.05.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Проще всего двумя операторами: один выводит на экран, другой - в файл.
А не подскажете операторы? Я в досе почти не разбираюсь.
Вот я писал уже: прописываю в командной строке "proba.exe >d:\1.txt" Вот первый оператор будет >d:\1.txt(вывод в файл). А второй какой? чтоб и на экран тоже.
С кодировками я разобрался.
А вот с переносами по строкам.

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Это зависит исключительно от Вас - как будете выводить, так и будет.
А как сделать-то, чтоб он также выводил как на экран? в паскале все нормально, экзешник когда запускаешь, тоже на экран все по строчкам идет, а в файле сплошным текстом.
roman_azn вне форума Ответить с цитированием
Старый 16.05.2012, 11:02   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вот я писал уже: прописываю в командной строке "proba.exe >d:\1.txt"
нет. так не получится.
Дело в том, что знак перенаправление вывода (значок "больше" в командной строке) это прерогатива исключительно операционной системы.

решить вашу проблему можно так (погоняйте данный код):
Код:
uses
  Crt;
var FOut : text;
label
  NotRedirected;
begin
  AssignCrt(FOut);
  Rewrite(FOut);
  asm
    mov ax, $4400
*   mov bx, 1
    int $21
{    sub ax, $42} {2 = Console output device}
    test  ax, 1 {2 = Console output device}
    jnz NotRedirected
  end;
  WriteLn('Было переопределение!!! [надпись на экран ВСЕГДА!!]');
  Assign(Output, '');
  Rewrite(Output);

NotRedirected:
  TextColor(White);
  WriteLn(Output,'Привет от Петросяна');
  WriteLn(Output,'Этот текст в зависимости от переопределения.');
  WriteLn(FOut,'А этот текст всегда на экран.');
end.
или так, как Вам предложил s-andriano:
везде, где у вас написано WriteLn(что-то ваше)
заменять на ДВЕ строчки кода:
Код:
  WriteLn(что-то ваше); {<----- это вывод на экран (если не испльзовать перенаправление вывода, конечно!}
  WriteLn(fOut, что-то ваше);  {вывод в текстовый файл.}
разумеется, файл fOut должен быть в начале программы создан (или открыт).
вот так, например
Код:
var 
  fOut : Text;
...
begin
   Assign(fOut, 'Log1.txt'); {назначение вывода в файл}
   Rewrite(fOut);   {перезаписать файл - старое содержимое будет стёрто}

   ....
   ....
   тут вывод в файл через WriteLn(fOut, 'Нужный текст вывода в файл');

   {обязательно нужно закрыть открытый файл}
   Close(fOut);
....
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2012, 18:03   #5
roman_azn
 
Регистрация: 15.05.2012
Сообщений: 6
По умолчанию

Спасибо за ответы, в конце концов я просто writeln'ы продублировал.
roman_azn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ вывод на экран\в файл Sergei1 Помощь студентам 2 10.01.2012 10:02
Текст вводится из текстового файла произвольной длины; вывод результатов на экран, принтер или в файл kestugar Помощь студентам 1 29.03.2011 19:09
ввод/вывод данных из/в файл для данной программы? Tetramorf Общие вопросы C/C++ 0 14.05.2010 17:03
Нужен вывод сообщения на экран: ну типа создать файл? Максим-2 Общие вопросы Delphi 7 28.07.2007 14:45