Авторизация

Логин: Пароль:
Регистрация Забыли свой пароль?

Ошибка I/O error 32

Страницы: 1
Ошибка I/O error 32
Здравствуйте, все. Я снова за советом. Написал маленькую прогрмку, вроде бы все правильно, но не работает выдает ошибку I/O error 32. В чем может быть проблема?
Вот код процедуры в каторой происходит ошибка
Код
procedure TForm3.Button1Click(Sender: TObject);
var
W: String;
windir:array[0..255] of char;
Begin
GetWindowsDirectory(windir,255);
W:=windir;
if FileExists(w+'\'+'sek.txt') then
begin
AssignFile(f, w+'\'+'sek.txt');
Append(f);
Writeln(f, (Edit1.Text));
Writeln(f, (Edit2.Text));
Closefile(f);
Form3.Close;
Form1.Repaint;
end;
if  FileExists(w+'\'+'sek.txt') then
begin
AssignFile(f, W+'\'+'sek.txt');
ReWrite(f);
Writeln(f, (Edit1.Text));
Writeln(f, (Edit2.Text));
Closefile(f);
Form3.Close;
end;
end;
Странно, у меня все без проблем отработало. Может быть у Вас прав в системе не достаточно или файл уже открыт. А в какой строке ошибка происходит?
Проблема в Append(f).
Так сразу сказать сложно в чем может быть проблема. На первый взгляд могу только предположить, что этот файл уже где-то открыт. Переменная f на сколько я понимаю глобальная. Может она в Вашей программе еще где используется.
Так сразу сказать сложно в чем может быть проблема. На первый взгляд могу только предположить, что этот файл уже где-то открыт. Переменная f на сколько я понимаю глобальная. Может она в Вашей программе еще где используется.
Да все верно, переменная а глобальная и она используется вот в этом коде
Код
procedure TForm1.FormPaint(Sender: TObject);
var
W: String;
windir:array[0..255] of char;
I: Integer;
ex:array[1..27] of string; s:string;
Begin
GetWindowsDirectory(windir,255);
W:=windir;
if FileExists(w+'\'+'sek.txt') then
begin
GetWindowsDirectory(windir,255);
W:=windir;
AssignFile(f, w+'\'+'sek.txt');
reset(f);
for i:=1 to 15 do
readln(f, ex[i]);
Label2.Visible:=True;
Form1.Label2.Caption:=ex[1];
Form1.Label3.Caption:=ex[3];
Form1.Label4.Caption:=ex[5];
Form1.Label5.Caption:=ex[7];
Form1.Label6.Caption:=ex[9];
Form1.Label7.Caption:=ex[11];
Form1.Label8.Caption:=ex[13];
Form1.Label9.Caption:=ex[15];
Form1.Label10.Caption:=ex[17];
Form1.Label11.Caption:=ex[19];
Form1.Label12.Caption:=ex[21];
Form1.Label13.Caption:=ex[23];
Form1.Label14.Caption:=ex[25];
Form1.Label15.Caption:=ex[27];
end;
end;


Но даже если его убрать все равно будет ошибка. А прошлый код я переписал, вот так

Код
procedure TForm3.Button1Click(Sender: TObject);
var
W: String;
windir:array[0..255] of char;
Begin
GetWindowsDirectory(windir,255);
W:=windir;
if FileExists(w+'\'+'sek.txt') then
begin
AssignFile(f, w+'\'+'sek.txt');
Append(f);
Writeln(f, (Edit1.Text));
Writeln(f, (Edit2.Text));
Closefile(f);
Form3.Close;
Form1.Repaint;
end;
if  not FileExists(w+'\'+'sek.txt') then
begin
AssignFile(f, W+'\'+'sek.txt'); {Assigns the Filename}
ReWrite(f);
Writeln(f, (Edit1.Text));
Writeln(f, (Edit2.Text));
Closefile(f);
Form3.Close;
end;
end;
Изменено: Игорь Васильев - 03.12.2009 20:53:08
У вас в TForm1.FormPaint не стоит CloseFile(f). Скорее всего проблема именно в этом.
Уже лучше, однако можно было записать еще короче. Например, так
Код
GetWindowsDirectory(windir,255);
W:=windir;
AssignFile(f, w+'\'+'sek.txt');
if FileExists(w+'\'+'sek.txt') then
  Append(f)
else
  ReWrite(f);
Writeln(f, (Edit1.Text));
Writeln(f, (Edit2.Text));
Closefile(f);
Form3.Close;

И еще везде после открытия файла закрывайте его функцией CloseFile
Изменено: Артём Кулинич - 03.12.2009 20:57:26
Спасибо всем. Проблема решена, действительно достаточно было везде после открытия использовать CloseFile(f)
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)