Файловая ошибка 105

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

24 мар 2009, 23:03

Почему-то в файл не выводит:

Код: Выделить всё

var t:text;    i:byte;begin assign(t,'Primer.txt'); rewrite(t); for i:=1 to 20 do writeln(t,'*'); close(t);end.
Нет религии выше истины
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

24 мар 2009, 23:08

Ну, при использовании досовского Turbo Pascal в Windows такое бывает. У меня после переустановки операционки Turbo Pascal перестал работать с файлами вообще.
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

24 мар 2009, 23:30

Да - интересное кино!А как же обойти?
Нет религии выше истины
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

24 мар 2009, 23:37

105 говорит о том, что файл не открыт для записи. Значит сбой выходит где то в районе Rewrite. Тут как бы причина должна быть одна - файл залочен кем то или чем то. Т.е. он открыт и используется, либо общая длина пути вместе со всеми подпапками к этому файлу выше 80 символов
It's a long way to the top if you wanna rock'n'roll
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

25 мар 2009, 00:17

Ну это ясно. А что делать-то?Как программно сделать, чтобы файл во время выполнения программы использовался только этой программой? Есть еще какие-нибудь методы?
Нет религии выше истины
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

25 мар 2009, 08:58

В потоке открой, с опцией

[syntax=Delphi]
f := TFileStream.Create('myFile.xz', fmCreate or fmShareCompat);
[/syntax]
[syntax=Delphi] [/syntax]
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

25 мар 2009, 09:03

В потоке открой, с опцией
[syntax=Delphi]
f := TFileStream.Create('myFile.xz', fmCreate or fmShareCompat); // еще fmShareExclusive
[/syntax]
[syntax=Delphi] [/syntax]
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

25 мар 2009, 14:09

Ну в Delphi c TStream все понятно - нужно подключить classes и Sysutils, а где их взять в Pascal для Dos? Как ни странно на другом компе ошибки 105 не возникает, а у меня даже после переустановки Паскаля работает только по такой схеме:assign-rewrite-close-reset.Нужно вывести дерево выражения в файл построчно в префиксной форме. Такая процедура записывает лишь корень дерева:

Код: Выделить всё

procedure ExitRez(r:TreePointer);
 begin
  if r<>nil then
   begin
    writeln(rez,r^.data);
    Prefix(r^.left);
    Prefix(r^.right);
   end
 end;
Дерево формируется из файла, в котором выражение записано в префиксной форме, так:

Код: Выделить всё

procedure Build(var p:TreePointer);
begin
 new(p);
 readln(fail,p^.data);
 if (p^.data ='+') or (p^.data='-') or (p^.data ='*') or (p^.data ='/') then
  begin
   Build(p^.left);
   Build(p^.right);
  end
  else
  if (p^.data='exp') or (p^.data ='ln') or (p^.data ='cos') or (p^.data ='sin') then
   begin
    p^.left:= nil;
    Build(p^.right);
   end
   else
    begin
     p^.left:= nil;
     p^.right:= nil;
    end
end;
Нет религии выше истины
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

25 мар 2009, 14:26

Чувствую что какие то непонятки со встроеным дос эмулятор, посему предлагаю
проверить

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
ComSpec = %SYSTEMROOT%\System32\cmd.exe

Наличие самого файла по указанному пути, его размер и версию. У меня размер 395776, версия 5.1.2600.2180

Проблемы подобного рода были после установки какого то софта то ли для LAN то ли WAN и этот софт подменил интерпретатор на свой, после были глюки вплоть до дебилизма, например не работал "dir /p" писал что то вроде ключ не опознан
It's a long way to the top if you wanna rock'n'roll
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

25 мар 2009, 15:40

Проверил всё нормально: версия такая же, размер тот же.Должна ли процедура ExitRez заполнять файл элементами дерева построчно или код неверен?
Нет религии выше истины
Ответить