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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> file access denied, Ошибка при попытке записи в файл 
V
    Опции темы
14SatanA88
Дата 28.12.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток, уважаемые программеры!

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Mask, ComCtrls;

type

  Air=record
    nomer: string[5]; // номер рейса
    tip: string[5]; // тип самолета
    pn: string[25]; // пункт назначения
    time: string[5]; // время вылета
  end;

  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button4: TButton;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Button5: TButton;
    DateTimePicker1: TDateTimePicker;
    GroupBox2: TGroupBox;
    ComboBox1: TComboBox;
    Button3: TButton;
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Button5Click(Sender: TObject);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure Button2Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  airport: array [1..99] of Air;
  na: integer;
  fz: file of Air;

implementation

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin

  Form1.Close; // выход из программы

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

// создание заголовков таблицы данных
  with StringGrid1 do
  begin
    cells[1,0]:='Номер рейса';
    cells[2,0]:='Тип самолета';
    cells[3,0]:='Пункт назначения';
    cells[4,0]:='Время вылета';
  end;
  na:=0;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin

// запрет на ввод некорректных символов
  If not (Key in ['0'..'9', #8]) then Key:=#0;

end;

procedure TForm1.Button5Click(Sender: TObject);
begin

// добавление новой записи в таблицу

// проверка введенных данных

  if Edit1.Text='' then
  begin
    Showmessage('Необходимо указать номер рейса!');
    exit;
  end;

  if Edit2.Text='' then
  begin
    Showmessage('Необходимо указать тип самолета!');
    exit;
  end;

  if Edit3.Text='' then
  begin
    Showmessage('Необходимо указать пункт назначения!');
    exit;
  end;

// добавление новой записи
  inc(na);
  airport[na].nomer:=Edit1.Text;
  airport[na].tip:=Edit2.Text;
  airport[na].pn:=Edit3.Text;
  airport[na].time:=TimeToStr(DateTimePicker1.Time);

  Write(fz,airport[na]);

  with StringGrid1 do
  begin
    cells[1,na]:=airport[na].nomer;
    cells[2,na]:=airport[na].tip;
    cells[3,na]:=airport[na].pn;
    cells[4,na]:=airport[na].time;
  end;

end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin

// запрет на ввод некорректных символов
  If not (Key in ['0'..'9', #8, ':']) then Key:=#0;

end;

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin

// сохранение массива записей в файл
  if OpenDialog1.Execute then
  begin
    AssignFile(fz, OpenDialog1.FileName);
    Rewrite(fz);
  end;

end;

end.



Писал лабу по программухе, наткнулся на неведомую ошибку. 
На строке   
Write(fz,airport[na]);
вылетает в рантайме с мессагой "file access denied"
я в курсе, что это за ошибка, но не в курсе, как ее обойти.
PM MAIL ICQ   Вверх
Данкинг
Дата 28.12.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Так ты точно сначала нажимаешь кнопку2, а затем уже кнопку 5 ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
PsiMagistr
Дата 28.12.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



По моему необходимо дописать процедуру закрытия файла. Это важно, если вы открыли, записали и не закрыли файл он остается открытым и дальнейший доступ к нему блокируется. При попытке еще раз нажать на ту же кнопку, получаем ошибку...

Это сообщение отредактировал(а) PsiMagistr - 28.12.2010, 14:23


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
14SatanA88
Дата 28.12.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

Код

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin

// сохранение массива записей в файл
  if OpenDialog1.Execute then
  begin
    AssignFile(fz, OpenDialog1.FileName);
    Rewrite(fz);
    for i:=1 to na do Write(fz,airport[na]);
  end;

end;


а у меня было

Код

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin

// сохранение массива записей в файл
  if OpenDialog1.Execute then
  begin
    AssignFile(fz, OpenDialog1.FileName);
    Rewrite(fz);
  end;

end;


в общем я в еще не созданный файл пихал записи.


Это сообщение отредактировал(а) 14SatanA88 - 28.12.2010, 14:25
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.