Ошибка i o 105 делфи

Luchfan123

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

1

25.05.2014, 12:53. Показов 6323. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
unit U8_2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:text;
  s:string;
 
  implementation
 
{$R *.dfm}
 
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 AssignFile(f, 'Pogrebnyak.txt');
 Rewrite(f);
 Reset(f);
 Writeln(f,s);
 CloseFile(f);
end;
 
end.

Я пишу название файла в первое текстовое поле,нажимаю на кнопку «Создание»,но мне выдает ошибку I/O Error 105.Подскажите,пожалуйста,где здесь ошибка?



0



2 / 2 / 0

Регистрация: 25.09.2012

Сообщений: 148

25.05.2014, 13:18

2

f:textfile;

Вот так надо.



0



0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

25.05.2014, 13:20

 [ТС]

3

Не помогает.Выдается та же самая ошибка



0



droider

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,076

25.05.2014, 13:35

4

Delphi
1
2
3
4
5
6
7
8
9
10
var
f:TextFile;
s:string;
begin
AssignFile(f, Edit1.Text);  //задаем в текстовом поле путь к файлу с расширением
s :='Тестовая строка';
Rewrite(f);  //создаем файл
Write(f, s); //записываем в него строку
CloseFile(f); //закрываем файл
end;

Либо еще проще

Delphi
1
FileCreate(Edit1.Text); //создаем пустой файл c заданным именем и расширением



1



Luchfan123

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

25.05.2014, 14:01

 [ТС]

5

Получилось!Спасибо большое!

Добавлено через 22 минуты

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
begin
 AssignFile(f, Edit1.Text);
 Rewrite(f);
  if FileExists(s) then
  begin
  AssignFile(f,s);
   Reset(f);
  end;
 Write(f,s);
 CloseFile(f);
end;

В общем пишу функцию,ели файл существует его открыть его,но почему то он у меня создается по-новому,что здесь не так?



0



droider

Эксперт Pascal/Delphi

4896 / 2766 / 851

Регистрация: 04.10.2012

Сообщений: 10,076

25.05.2014, 16:35

6

Luchfan123,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
begin
 AssignFile(f, Edit1.Text);
  if FileExists(Edit1.Text) then
  begin
   Reset(f);
  end
  else
  begin
  Rewrite(f);
 Write(f,'Мой текст');
  end;
 CloseFile(f);
end;



1



0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

26.05.2014, 02:22

 [ТС]

7

Получилось!А функцию закрытия файла нужно прописать только одной строкой?: CloseFile(f);?Или что то нужно еще добавить?



0



пофигист широкого профиля

4662 / 3096 / 855

Регистрация: 15.07.2013

Сообщений: 17,867

26.05.2014, 02:51

8

Цитата
Сообщение от Luchfan123
Посмотреть сообщение

А функцию закрытия файла нужно прописать только одной строкой?: CloseFile(f);?Или что то нужно еще добавить?

Одной строки достаточно.



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

26.05.2014, 02:51

Помогаю со студенческими работами здесь

Error 105
Доброго дня суток! Делал прогу, вроде все правильно, вот код:
program Project2;

uses

I/o error 105
Из-за чего может быть эта ошибка? У меня на компе всё работает, но другу скидываю у него это i/o…

Пресловутая I/O error 105
Доброго времени суток, форумчане!
Заранее просьба не ругаться, ибо автор крайне плохо знает…

Опять I/O Error 105
program ProjectX;

uses
Windows,
SysUtils;
type
telem=Integer;
tlist=^Node;

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

I am testing a login and account creation program. When the user presses the Create New Account button it prompts them to enter a Username (which saves to a variable-sNewUsername) and a Password (which saves to a variable-sNewPassword).
The password is saved to a text file.
For some reason, it gives me the ‘I/O Error 105’ when trying to save the password to the text file.

I have run the debug tool and it saves to the variable fine but does not Write to the text file.
I have double checked if I have used Rewrite instead of Reset and all looks fine.

AssignFile(tf,sNewUsername + '.txt');
Rewrite(tf);

  writeln(sNewPassword);

closefile(tf);

I expected the file to save the Password from the variable to the text file but it does not write the password to the text file and give an error i do not understand (‘I/O error 105’).

David Heffernan's user avatar

asked Mar 25, 2019 at 19:53

Ethan Schoonbee's user avatar

Your call to writeln is not providing a file object, and so attempts to write to the standard output, which presumably does not exist in your process.

Change it to

writeln(tf, sNewPassword);

However, you should probably use a more modern mechanism to write a file. Further, you are running a serious risk that you won’t write the file to the desired directory because you only specify a relative path.

answered Mar 25, 2019 at 20:00

David Heffernan's user avatar

David HeffernanDavid Heffernan

600k42 gold badges1065 silver badges1483 bronze badges

1


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

Модераторы: Poseidon, Snowy, bems, MetalFan

Страницы: (2) [Все] 1 2 
( Перейти к первому непрочитанному сообщению )

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> IO Error 105, как избавиться 

:(

   

Опции темы

Штабс
Дата 14.12.2004, 16:20 (ссылка)
   |    (голосов: 0)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Unregistered

Пипл срочно надо избавиться от этой ошибки

код вроде верный

try

AssignFile(f, FileName);
Reset(f);
except
Rewrite(f) ;
end;

Файл существует
но на любую попытку скинуть в него хоть что то мессадже

IO Error 105

что не так?!

  Вверх
Bes
Дата 14.12.2004, 16:23 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Подожди, т.е. теоретически возможна команда ReWrite без Assign-а?…
Это ли не ошибка?
Тем более если файл существует, то он откроется для чтения и понятно, что писать он в себя ничего не дает это ошибка два.

PM MAIL   Вверх
Штабс
Дата 14.12.2004, 16:46 (ссылка)
   |    (голосов: 0)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Unregistered

Ой прошу пардону

AssignFile(f, FileName);
try
Reset(f);
except
Rewrite(f) ;
end;

Rewrite() отрабатывает

ругань конкретно идет на WriteLn(f,BlaBlaBlaBlaBlaBlaBla) при Reset(f) при пошаговой трассировке F8

напоминаю 105 ошибка это невозможность открыть файл для записи

AssignFile(f, FileName) OK
try OK
Reset(f); OK
except OK

структура отработала (т.е. существующий файл получил указатель и открыт для работы)

WriteLn(f,BlaBlaBlaBlaBlaBlaBla)

IO Error 105

PS кстати аналогичное построение с $I- …. $I+ результат аналогичный

  Вверх
Bes
Дата 14.12.2004, 17:23 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Че-то я не пойму:
что за конструкция, для чего она, или я чего-то не понимаю или она лишена логики. т.е. программа должна попробовать открыть файл для чтения и если не получилось то открыть для записи….? Странно как-то это.

try
Reset(f);
except
Rewrite(f) ;
end;

а почему отрабатывает Rewrite(f) ; т.е. для чтения он открытьсяне может?
а для записи может?…..

далее WriteLn(f,BlaBlaBlaBlaBlaBlaBla)
BlaBlaBlaBlaBlaBlaBla-это переменная или имеется ввиду WriteLn(f,’BlaBlaBlaBlaBlaBlaBla’)?

Мне кажется но все-таки открывается для чтения и ругается при попытке записать что-либо в него, что вообщем-то естественно.

PM MAIL   Вверх
devmstr
Дата 14.12.2004, 17:46 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Developer
**

Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11

Если хочешь писать пиши:

Код

AssignFile(f, FileName);

Rewrite(f);

write(f, '.....');
end;

[s]

———————

Think different ©Steve Jobs 
user posted image

PM MAIL WWW   Вверх
Vit
Дата 14.12.2004, 18:01 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

f — какого типа?

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
Zero
Дата 15.12.2004, 02:00 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24

Собственно по ошибкам в/в, можно исп. дерективы компилятора {$I-} и {$I+}
Добавлено @ 02:05

Цитата(Vit @ 14.12.2004, 18:01)
f — какого типа?

Имхо, тип здесь не играет особой роли…

PM MAIL ICQ   Вверх
Vit
Дата 15.12.2004, 03:06 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата(Zero @ 14.12.2004, 17:00)
Имхо, тип здесь не играет особой роли…

Считаешь что мне делать нечего?

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
Vit
Дата 15.12.2004, 03:24 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Ошибка в общем-то проста и очевидна, я не зря про тип спрашивал, не совсем был уверен, хотя и догадывался откуда ноги растут, сейчас добрался до Дельфи проверил…

Вот код:

Код

 var f:TextFile;
begin
 AssignFile(f, 'c:myfile.txt');
 Reset(f);
 write(f, 'sssss');
end;

Если этот код запустить, и файл ‘c:myfile.txt’ существует, то получим эту самую ошибку 105. Почему? До потому что reset не открывает текстовые файлы на запись! только на чтение. Для записи текстовый файл должен быть открыт только rewrite или append. Вот и все проблемы!

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
Bes
Дата 15.12.2004, 07:27 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Об чем и говорим на каждом собрании… :-)

PM MAIL   Вверх
Штабс
Дата 16.12.2004, 13:20 (ссылка)
   |    (голосов: 0)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Unregistered

Только что вернулся от заказчика….
прошу извинить за долгое молчание

и так
тип файла
My_File:TextFile
т.е. текстовой

Директивы компилятора {$I} позволяют отлавливать Error Code
2: Файл не найден
3: Неверное имя
4: Слишком много открытых файлов
5: Файл не доступен
100: Достигнут конец файла (EOF)
101: диск переполне
106: ошибка ввода

105 относится к расширенной таблице ошибок

Если этот код запустить, и файл ‘c:myfile.txt’ существует, то получим эту самую ошибку 105. Почему? До потому что reset не открывает текстовые файлы на запись! только на чтение. Для записи текстовый файл должен быть открыт только rewrite или append. Вот и все проблемы!

спасибо VIT
большое
но насчет очевидности
smile
я к примеру не знал этого ….
хотя стаж еше с TP4
еще раз большое спасибо

  Вверх
Vit
Дата 16.12.2004, 14:13 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата
но насчет очевидности

я к примеру не знал этого ….
хотя стаж еше с TP4

smile У меня опыт больше! Я с TP3 smile

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
devmstr
Дата 16.12.2004, 19:47 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Developer
**

Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11

Vit
Приятно, когда тебя окружают такие проффесионалы! smile

———————

Think different ©Steve Jobs 
user posted image

PM MAIL WWW   Вверх
Zero
Дата 17.12.2004, 23:34 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24

Цитата(Vit @ 15.12.2004, 03:06)
Считаешь что мне делать нечего?

Извени Vit, нехотел тебя обидеть, до меня и до самого сразу недошло что от типа многое зависит, покрайней мере в данном случае…
Просто мне обычно когда требется избавится от ошибок в/выв, то на ум всегда первое что приходит ─ отключение на их проверку, а дальше что-нибудь ещё предумывать приходится…
Ещё раз, извени…

Это сообщение отредактировал(а) Zero — 17.12.2004, 23:35

PM MAIL ICQ   Вверх
Vit
Дата 19.12.2004, 05:00 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата(Zero @ 17.12.2004, 14:34)
Ещё раз, извени…

smile Не страшно, сам такие ляпы делаю систематически smile

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

PM MAIL WWW ICQ   Вверх
кварк
Дата 20.12.2004, 14:32 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.8.2002

Репутация: нет
Всего: нет

Извините, что вcтреваю, но зачем Assign?

tf: TextFile;

{$I-}
Reset(tf,’C:temp.out’);
{$I+}
If IOResult <> 0
then // Не открыт
else // Открыт

Rewrite — то же самое. Аррend’у почему-то нужен assign.

P.S. Всегда был в этом уверен, только что полез в справку и не нашел упоминаний об этом. Но работает еще с ТР: у меня даже в шаблон это забито :-)

P.P.S.
Кстати, try..except эти функции не ловятся. Только через IOResult. Очень уж они старые. Хотя, не исключено, что их переписали «на новый лад».

Это сообщение отредактировал(а) кварк — 20.12.2004, 14:35

PM MAIL   Вверх



















Страницы: (2) [Все] 1 2 

Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Общие вопросы»
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »

Перейти к контенту

Luchfan123

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

1

25.05.2014, 12:53. Показов 5647. Ответов 7

Метки нет (Все метки)


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
unit U8_2;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  f:text;
  s:string;
 
  implementation
 
{$R *.dfm}
 
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 AssignFile(f, 'Pogrebnyak.txt');
 Rewrite(f);
 Reset(f);
 Writeln(f,s);
 CloseFile(f);
end;
 
end.

Я пишу название файла в первое текстовое поле,нажимаю на кнопку «Создание»,но мне выдает ошибку I/O Error 105.Подскажите,пожалуйста,где здесь ошибка?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

2 / 2 / 0

Регистрация: 25.09.2012

Сообщений: 148

25.05.2014, 13:18

2

f:textfile;

Вот так надо.

0

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

25.05.2014, 13:20

 [ТС]

3

Не помогает.Выдается та же самая ошибка

0

droider

Эксперт Pascal/Delphi

4880 / 2753 / 848

Регистрация: 04.10.2012

Сообщений: 10,037

25.05.2014, 13:35

4

Delphi
1
2
3
4
5
6
7
8
9
10
var
f:TextFile;
s:string;
begin
AssignFile(f, Edit1.Text);  //задаем в текстовом поле путь к файлу с расширением
s :='Тестовая строка';
Rewrite(f);  //создаем файл
Write(f, s); //записываем в него строку
CloseFile(f); //закрываем файл
end;

Либо еще проще

Delphi
1
FileCreate(Edit1.Text); //создаем пустой файл c заданным именем и расширением

1

Luchfan123

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

25.05.2014, 14:01

 [ТС]

5

Получилось!Спасибо большое!

Добавлено через 22 минуты

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
begin
 AssignFile(f, Edit1.Text);
 Rewrite(f);
  if FileExists(s) then
  begin
  AssignFile(f,s);
   Reset(f);
  end;
 Write(f,s);
 CloseFile(f);
end;

В общем пишу функцию,ели файл существует его открыть его,но почему то он у меня создается по-новому,что здесь не так?

0

droider

Эксперт Pascal/Delphi

4880 / 2753 / 848

Регистрация: 04.10.2012

Сообщений: 10,037

25.05.2014, 16:35

6

Luchfan123,

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
begin
 AssignFile(f, Edit1.Text);
  if FileExists(Edit1.Text) then
  begin
   Reset(f);
  end
  else
  begin
  Rewrite(f);
 Write(f,'Мой текст');
  end;
 CloseFile(f);
end;

1

0 / 0 / 0

Регистрация: 29.03.2014

Сообщений: 16

26.05.2014, 02:22

 [ТС]

7

Получилось!А функцию закрытия файла нужно прописать только одной строкой?: CloseFile(f);?Или что то нужно еще добавить?

0

пофигист широкого профиля

4599 / 3059 / 850

Регистрация: 15.07.2013

Сообщений: 17,631

26.05.2014, 02:51

8

Цитата
Сообщение от Luchfan123
Посмотреть сообщение

А функцию закрытия файла нужно прописать только одной строкой?: CloseFile(f);?Или что то нужно еще добавить?

Одной строки достаточно.

1

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

26.05.2014, 02:51

Помогаю со студенческими работами здесь

Error 105
Доброго дня суток! Делал прогу, вроде все правильно, вот код:
program Project2;

uses

I/o error 105
Из-за чего может быть эта ошибка? У меня на компе всё работает, но другу скидываю у него это i/o…

Пресловутая I/O error 105
Доброго времени суток, форумчане!
Заранее просьба не ругаться, ибо автор крайне плохо знает…

Опять I/O Error 105
program ProjectX;

uses
Windows,
SysUtils;
type
telem=Integer;
tlist=^Node;

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

I am testing a login and account creation program. When the user presses the Create New Account button it prompts them to enter a Username (which saves to a variable-sNewUsername) and a Password (which saves to a variable-sNewPassword).
The password is saved to a text file.
For some reason, it gives me the ‘I/O Error 105’ when trying to save the password to the text file.

I have run the debug tool and it saves to the variable fine but does not Write to the text file.
I have double checked if I have used Rewrite instead of Reset and all looks fine.

AssignFile(tf,sNewUsername + '.txt');
Rewrite(tf);

  writeln(sNewPassword);

closefile(tf);

I expected the file to save the Password from the variable to the text file but it does not write the password to the text file and give an error i do not understand (‘I/O error 105’).

David Heffernan's user avatar

asked Mar 25, 2019 at 19:53

Ethan Schoonbee's user avatar

Your call to writeln is not providing a file object, and so attempts to write to the standard output, which presumably does not exist in your process.

Change it to

writeln(tf, sNewPassword);

However, you should probably use a more modern mechanism to write a file. Further, you are running a serious risk that you won’t write the file to the desired directory because you only specify a relative path.

answered Mar 25, 2019 at 20:00

David Heffernan's user avatar

David HeffernanDavid Heffernan

595k42 gold badges1052 silver badges1470 bronze badges

1


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

Модераторы: Poseidon, Snowy, bems, MetalFan

Страницы: (2) [Все] 1 2 
( Перейти к первому непрочитанному сообщению )

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> IO Error 105, как избавиться 

:(

Опции темы

Штабс

Unregistered

Пипл срочно надо избавиться от этой ошибки

код вроде верный

try

AssignFile(f, FileName);
Reset(f);
except
Rewrite(f) ;
end;

Файл существует
но на любую попытку скинуть в него хоть что то мессадже

IO Error 105

что не так?!

  Вверх
Bes

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Подожди, т.е. теоретически возможна команда ReWrite без Assign-а?…
Это ли не ошибка?
Тем более если файл существует, то он откроется для чтения и понятно, что писать он в себя ничего не дает это ошибка два.

Штабс

Unregistered

Ой прошу пардону

AssignFile(f, FileName);
try
Reset(f);
except
Rewrite(f) ;
end;

Rewrite() отрабатывает

ругань конкретно идет на WriteLn(f,BlaBlaBlaBlaBlaBlaBla) при Reset(f) при пошаговой трассировке F8

напоминаю 105 ошибка это невозможность открыть файл для записи

AssignFile(f, FileName) OK
try OK
Reset(f); OK
except OK

структура отработала (т.е. существующий файл получил указатель и открыт для работы)

WriteLn(f,BlaBlaBlaBlaBlaBlaBla)

IO Error 105

PS кстати аналогичное построение с $I- …. $I+ результат аналогичный

  Вверх
Bes

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Че-то я не пойму:
что за конструкция, для чего она, или я чего-то не понимаю или она лишена логики. т.е. программа должна попробовать открыть файл для чтения и если не получилось то открыть для записи….? Странно как-то это.

try
Reset(f);
except
Rewrite(f) ;
end;

а почему отрабатывает Rewrite(f) ; т.е. для чтения он открытьсяне может?
а для записи может?…..

далее WriteLn(f,BlaBlaBlaBlaBlaBlaBla)
BlaBlaBlaBlaBlaBlaBla-это переменная или имеется ввиду WriteLn(f,’BlaBlaBlaBlaBlaBlaBla’)?

Мне кажется но все-таки открывается для чтения и ругается при попытке записать что-либо в него, что вообщем-то естественно.

devmstr

Developer
**

Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11

Если хочешь писать пиши:

Код

AssignFile(f, FileName);

Rewrite(f);

write(f, '.....');
end;

[s]

———————

Think different ©Steve Jobs 
user posted image

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

f — какого типа?

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

Zero

Эксперт
****

Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24

Собственно по ошибкам в/в, можно исп. дерективы компилятора {$I-} и {$I+}
Добавлено @ 02:05

Цитата(Vit @ 14.12.2004, 18:01)
f — какого типа?

Имхо, тип здесь не играет особой роли…

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата(Zero @ 14.12.2004, 17:00)
Имхо, тип здесь не играет особой роли…

Считаешь что мне делать нечего?

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Ошибка в общем-то проста и очевидна, я не зря про тип спрашивал, не совсем был уверен, хотя и догадывался откуда ноги растут, сейчас добрался до Дельфи проверил…

Вот код:

Код

 var f:TextFile;
begin
 AssignFile(f, 'c:myfile.txt');
 Reset(f);
 write(f, 'sssss');
end;

Если этот код запустить, и файл ‘c:myfile.txt’ существует, то получим эту самую ошибку 105. Почему? До потому что reset не открывает текстовые файлы на запись! только на чтение. Для записи текстовый файл должен быть открыт только rewrite или append. Вот и все проблемы!

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

Bes

Опытный
**

Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7

Об чем и говорим на каждом собрании… :-)

Штабс

Unregistered

Только что вернулся от заказчика….
прошу извинить за долгое молчание

и так
тип файла
My_File:TextFile
т.е. текстовой

Директивы компилятора {$I} позволяют отлавливать Error Code
2: Файл не найден
3: Неверное имя
4: Слишком много открытых файлов
5: Файл не доступен
100: Достигнут конец файла (EOF)
101: диск переполне
106: ошибка ввода

105 относится к расширенной таблице ошибок

Если этот код запустить, и файл ‘c:myfile.txt’ существует, то получим эту самую ошибку 105. Почему? До потому что reset не открывает текстовые файлы на запись! только на чтение. Для записи текстовый файл должен быть открыт только rewrite или append. Вот и все проблемы!

спасибо VIT
большое
но насчет очевидности
smile
я к примеру не знал этого ….
хотя стаж еше с TP4
еще раз большое спасибо

  Вверх
Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата
но насчет очевидности

я к примеру не знал этого ….
хотя стаж еше с TP4

smile У меня опыт больше! Я с TP3 smile

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

devmstr

Developer
**

Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: 2
Всего: 11

Vit
Приятно, когда тебя окружают такие проффесионалы! smile

———————

Think different ©Steve Jobs 
user posted image

Zero

Эксперт
****

Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24

Цитата(Vit @ 15.12.2004, 03:06)
Считаешь что мне делать нечего?

Извени Vit, нехотел тебя обидеть, до меня и до самого сразу недошло что от типа многое зависит, покрайней мере в данном случае…
Просто мне обычно когда требется избавится от ошибок в/выв, то на ум всегда первое что приходит ─ отключение на их проверку, а дальше что-нибудь ещё предумывать приходится…
Ещё раз, извени…

Это сообщение отредактировал(а) Zero — 17.12.2004, 23:35

Vit

Vitaly Nevzorov
****

Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207

Цитата(Zero @ 17.12.2004, 14:34)
Ещё раз, извени…

smile Не страшно, сам такие ляпы делаю систематически smile

———————

With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru

кварк

Шустрый
*

Профиль
Группа: Участник
Сообщений: 91
Регистрация: 2.8.2002

Репутация: нет
Всего: нет

Извините, что вcтреваю, но зачем Assign?

tf: TextFile;

{$I-}
Reset(tf,’C:temp.out’);
{$I+}
If IOResult <> 0
then // Не открыт
else // Открыт

Rewrite — то же самое. Аррend’у почему-то нужен assign.

P.S. Всегда был в этом уверен, только что полез в справку и не нашел упоминаний об этом. Но работает еще с ТР: у меня даже в шаблон это забито :-)

P.P.S.
Кстати, try..except эти функции не ловятся. Только через IOResult. Очень уж они старые. Хотя, не исключено, что их переписали «на новый лад».

Это сообщение отредактировал(а) кварк — 20.12.2004, 14:35



















Правила форума «Delphi: Общие вопросы»
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »
  • Up to Parent: System.SysUtils
  • Methods
  • Properties
  • Fields

EInOutError

Delphi

EInOutError = class(Exception)

C++

class PASCALIMPLEMENTATION EInOutError : public Exception

Contents

  • 1 Properties
  • 2 Description
    • 2.1 See Also
    • 2.2 Code Examples

Properties

Type Visibility Source Unit Parent
class public

System.SysUtils.pas

System.SysUtils.hpp

System.SysUtils System.SysUtils

Description

EInOutError is the exception class for file input/output errors.

EInOutError is raised when a file input/output error occurs, provided I/O checking is enabled.

Note: In Delphi code, use the $I+ directive to enable I/O checking. If an I/O error occurs while this directive is disabled, the application must call IOResult to clear the error.

Note: In C++ programs, I/O checking is a project option.

The error code is available in the ErrorCode class member. Error codes come in ranges from 0 through 99 (native OS errors). An error number greater than 100 indicates a Delphi OS error.

Error codes in the range from 0 through 99 represent OS error conditions. Refer to the OS documentation for complete error summaries. The SysErrorMessage function returns descriptive text for OS errors.

Here are some common OS I/O errors.

Number

Name

Description

100

Disk read error

Reported by Read on a typed file if you attempt to read past the end of the file.

101

Disk write error

Reported by CloseFile, Write, WriteIn, or Flush if the disk becomes full.

102

File not assigned

Reported by Reset, Rewrite, Append, Rename, or Erase if the file variable has not been assigned a name through a call to Assign or AssignFile.

103

File not open

Reported by CloseFile, Read Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead, or BlockWrite if the file is not open.

104

File not open for input

Reported by Read, Readln, Eof, Eoln, SeekEof, or SeekEoln on a text file if the file is not open for input.

105

File not open for output

Reported by Write or Writeln on a text file if you do not generate a Console application.

106

Invalid numeric format

Reported by Read or Readln if a numeric value read from a text file does not conform to the proper numeric format.

Tip: When developing GUI applications and you need to provide console I/O, then you need to use the AllocConsole method in order to avoid a 105 File not open for output error. After you end your console I/O code block, call FreeConsole.

begin
  AllocConsole;
  Writeln('Console I/O is now enabled.');
  { code block }
  FreeConsole;
end;
{
  AllocConsole();
  printf("Console I/O is now enabled.n");
  /* code block */
  FreeConsole();
}

See Also

  • System.IOResult
  • System.Classes.EStreamError
  • System.SysUtils.SysErrorMessage
  • Input-Output Errors
  • File Input and Output Support
  • Disk And Directory Support Routines
  • Standard Routines and Input-Output

Code Examples

  • TOpenDialogTitle (Delphi)

For reason or other sometimes it seems that console is not ready when test are already running, and logging to console fails. Same project runs fine with TestInsight. dpr code underneath.

I have no idea why and what and how, but just this happens at least on my dev box at work. I’ve seen also that it fails most of the time, but not 100% always, so maybe some part of the code shoudl wait for the console to appear, just a guess.

Io-exception happens at results := runner.Execute;

… dpr …
logger := TDUnitXConsoleLogger.Create(true);
runner.AddLogger(logger);
//Generate an NUnit compatible XML File
nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
runner.AddLogger(nunitLogger);
runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests;

//Run tests
results := runner.Execute;

Call stack:
DUnitX.Windows.Console.TDUnitXWindowsConsoleWriter.InternalWriteLn(???)
DUnitX.Windows.Console.TDUnitXWindowsConsoleWriter.InternalWriteLn(‘DUnitX — [STCommon.UnitTests.exe] — Starting Tests.’)
DUnitX.ConsoleWriter.Base.TDUnitXConsoleWriterBase.WriteLn(‘DUnitX — [STCommon.UnitTests.exe] — Starting Tests.’)
DUnitX.Loggers.Console.TDUnitXConsoleLogger.OnTestingStarts(28176,1548,1548)
DUnitX.TestRunner.TDUnitXTestRunner.Loggers_TestingStarts(28176,1548,1548)
DUnitX.TestRunner.TDUnitXTestRunner.Execute

 
elf-eluna-alina

 
(2005-06-14 16:53)
[0]

Хай хлопцы!
Кто подскажет:


dll:=LoadLibrary(PChar(«somedll.dll»));

вызывает EInOutError «I/O error 105»

як с этой ерундой бороться?

заранее thx


 
-=XP=- ©

 
(2005-06-14 16:56)
[1]

Хай, пипл!
Рекомендую обратиться к справке и нарыть там чиста текстовое описание ошибки 105.

Як нароете, телеграхвируйте.

Немае за що.


 
elf-eluna-alina

 
(2005-06-14 16:59)
[2]

105 File not open for output
:) Навіщо їй output!!!


 
-=XP=- ©

 
(2005-06-14 17:03)
[3]

А файл присутствует в нужном месте? Никаким другим приложением не занят?


 
elf-eluna-alina

 
(2005-06-14 17:05)
[4]

так


 
Digitman ©

 
(2005-06-14 17:05)
[5]


> XP

С какого перепугу WinAPI-ф-ции стали возбуждать Делфи-исключения ?


 
elf-eluna-alina

 
(2005-06-14 17:06)
[6]

самому интересно :) прога VCL вызывет хук из ДЛЛ


 
elf-eluna-alina

 
(2005-06-14 17:08)
[7]

так я не догнал: зачем длл право на запись


 
Игорь Шевченко ©

 
(2005-06-14 17:09)
[8]


 
-=XP=- ©

 
(2005-06-14 17:10)
[9]

С какого перепугу WinAPI-ф-ции стали возбуждать Делфи-исключения ?

О! :-/
Знать, что-то не то в разделе инициализации.
Взглянуть бы на исходники библиотеки.


 
elf-eluna-alina

 
(2005-06-14 17:13)
[10]

да ладно! супер помощь!
Суммирую
dll:=LoadLibrary(PChar(«somelib.dll»));
поднимает VCL исключение EInOut с кодом VCL, а не Win32(105 File not open for output)
Из-за чего это происходит? Явно не LoadLibrary: она 105й код не может поднять по определению!


 
elf-eluna-alina

 
(2005-06-14 17:14)
[11]

я идиот. Это там и есть. Всем ДЯКУЮ!!!


 
-=XP=- ©

 
(2005-06-14 17:16)
[12]

Явно не LoadLibrary

Что в разделе инициализации библиотеки прописано?
DllEntryPoint коим-то боком назначена?


 
-=XP=- ©

 
(2005-06-14 17:17)
[13]

Удалено модератором
Примечание: Offtopic


 
elf-eluna-alina

 
(2005-06-14 17:18)
[14]

reset(f);
write(f..);


 
Digitman ©

 
(2005-06-14 17:21)
[15]


> -=XP=- ©   (14.06.05 17:10) [9]
> О! :-/
> Знать, что-то не то в разделе инициализации

ну дык !)..

это ж первое что должно прийти в голову в такой ситуации)


 
elf-eluna-alina

 
(2005-06-14 17:22)
[16]

у меня пришло 12 м


 
Digitman ©

 
(2005-06-14 17:24)
[17]


> 12 м

это — в попугаях ?)


@markhumphreysjhc

Taking existing tests and simply recompiling them use Delphi 11.2 causes I/O Error 105 errors.

It looks like no matter what the tests are compiled with, the WindowsConloseWriter sets Self.RedirectedStdOut to be true.

Even if the actual console logger is not set, then the final call to System.Write in the project — System.Write('Done.. press <Enter> key to quit.'); still causes the exception.

It looks like the call to GetConsoleMode always returns false, setting the RedirectedStdout flag.

It might be something in the tests that is causing this, but I don’t understand why it works in 10.2 and not in 11.2

@vincentparrett

I’m not able to reproduce this here. Try recreating the project and copying the existing units in, perhaps something got messed up during the upgrade process.

@TommiPrami

I had this way back when I used the console.

At development I have been using TestInsight, so have not tested the
console.

It somehow can’t allocate a console always. I have a feeling that there
were some fixes to this. But not sure though. Vaguely remember it might
have been a problem of tested code, to interfere with console creation
somehow. I’ll try to dig up more info…

On Thu, Nov 24, 2022 at 11:23 AM Mark Humphreys ***@***.***> wrote:
Taking existing tests and simply recompiling them use Delphi 11.2 causes
I/O Error 105 errors.

It looks like no matter what the tests are compiled with, the
WindowsConloseWriter sets Self.RedirectedStdOut to be true.

Even if the actual console logger is not set, then the final call to
System.Write in the project — System.Write(‘Done.. press <Enter> key to
quit.’); still causes the exception.

It looks like the call to GetConsoleMode always returns false, setting
the RedirectedStdout flag.

It might be something in the tests that is causing this, but I don’t
understand why it works in 10.2 and not in 11.2


Reply to this email directly, view it on GitHub
<#324>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AA7E2H243QPK44QSOPQT2D3WJ4X2FANCNFSM6AAAAAASKCMKVA>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>

@markhumphreysjhc

I have noticed that occasionally it all works. I suspect that it is something in the code being tested, but I will have to start recreate the project one set of tests at a time.

  • Ошибка i key nissan murano
  • Ошибка hzr мерседес актрос мп1
  • Ошибка hzr 0203 мерседес актрос
  • Ошибка hz дизель генератор jcb
  • Ошибка hytech нет памяти для работы код 2