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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.09.2015, 14:57   #1
Antiseptik
 
Регистрация: 25.06.2015
Сообщений: 9
Счастье через DeleteFile не могу удалить файл.

через DeleteFile не могу удалить файл. Говорит, файл занят, но я его закрыл (CloseFile) везде, где с ним работал.
вот код:
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit6: TEdit;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
    procedure LoadFromPerson;
    procedure NewRec;
    procedure ReeadFromPerson;
    procedure WriteInPerson;
    procedure DelFromPerson;
  public
    { Public declarations }
  end;

  type
  Person=Record
    pSite: string[100];
    pLogin: string[50];
    pPassword: string[50];
    pExecuted: integer;
    pEarned: longint;
  end;

var
  Form1: TForm1;
  Fp: File of Person;           // Файл для "Person.dat".
  p: Person;                    // Переменная типа для работы с записью "Person"
  pRec: integer;                 // Текущий номер записи "Person".

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  WriteInPerson;
  Dec(pRec);
  ReeadFromPerson;
  Label1.Caption:=IntToStr(pRec);
  if pRec=0 then Button1.Enabled:=False;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  WriteInPerson;
  Inc(pRec);
  AssignFile(Fp,'Person.dat');
  Reset(Fp);
  if FileSize(Fp)=pRec then NewRec;
  ReeadFromPerson;
  Label1.Caption:=IntToStr(pRec);
  if pRec>0 then Button1.Enabled:=True;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  DelFromPerson;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Edit1.Text:=Edit6.Text;
  Edit2.Text:=Edit6.Text;
  Edit3.Text:=Edit6.Text;
  Edit4.Text:=Edit6.Text;
  Edit5.Text:=Edit6.Text;
end;

procedure TForm1.DelFromPerson;
begin
  if(not DeleteFile('Person.dat')) then ShowMessage('Cannot delete file :' + SysErrorMessage(GetLastError));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadFromPerson;
end;

procedure TForm1.LoadFromPerson;
var s: integer;
begin
// Проверяем наличие файла "Person.dat".
  if FileExists('Person.dat')=False then
    begin
      AssignFile(Fp,'Person.dat');   // Инициализируем файл.
      ReWrite(Fp);                   // Создаём файл.
      NewRec;                        
    end;
   pRec:=0;                          
   ReeadFromPerson;                 

// Включаем/отключаем кнопки.
  if pRec=0 then Button1.Enabled:=False
  else Button1.Enabled:=True;
  Label1.Caption:=IntToStr(pRec);
end;

// Процедура создания новой записи.
procedure TForm1.NewRec;
begin
  Seek(Fp, pRec);
  p.pSite:='';
  p.pLogin:='';
  p.pPassword:='';
  p.pExecuted:=0;
  p.pEarned:=0;
  Write(Fp,p);
end;

procedure TForm1.ReeadFromPerson;
begin
  AssignFile(Fp,'Person.dat');
  Reset(Fp);
  Seek(Fp,pRec);
  Read(Fp,p);
  CloseFile(Fp);
  Edit1.Text:=p.pSite;
  Edit2.Text:=p.pLogin;
  Edit3.Text:=p.pPassword;
  Edit4.Text:=IntToStr(p.pExecuted);
  Edit5.Text:=IntToStr(p.pEarned);
end;

procedure TForm1.WriteInPerson;
begin
  p.pSite:=Edit1.Text;
  p.pLogin:=Edit2.Text;
  p.pPassword:=Edit3.Text;
  p.pExecuted:=StrToInt(Edit4.Text);
  p.pEarned:=StrToInt(Edit5.Text);
  AssignFile(Fp,'Person.dat');
  Reset(Fp);
  Seek(Fp,pRec);
  Write(Fp,p);
  CloseFile(Fp);
end;



end.
Посоветуйте что-нибудь, пожалуйста.
Antiseptik вне форума
Старый 25.09.2015, 15:29   #2
Antiseptik
 
Регистрация: 25.06.2015
Сообщений: 9
По умолчанию

Всё, вроде разобрался. Не поставил один CloseFile в процедуре NewRec.

Код:
// Процедура создания новой записи.
procedure TForm1.NewRec;
begin
  Seek(Fp, pRec);
  p.pSite:='';
  p.pLogin:='';
  p.pPassword:='';
  p.pExecuted:=0;
  p.pEarned:=0;
  Write(Fp,p);
 CloseFile(Fp);
end;
Чёт протупил, извините. Тема закрыта!
Antiseptik вне форума
Старый 25.09.2015, 15:31   #3
Antiseptik
 
Регистрация: 25.06.2015
Сообщений: 9
По умолчанию

Времени убил на поиск ошибки
Antiseptik вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу вставить лист и удалить... файл прилагается vladtr Microsoft Office Excel 3 01.06.2011 12:41
через *бат фаил не могу удалить папку majikku^^sempai Помощь студентам 2 18.03.2010 19:21
Что за файлы *.ocx? Не могу удалить такой файл. TwiX Свободное общение 9 12.11.2009 14:37
После CreateFile не срабатывает DeleteFile Arkuz Общие вопросы Delphi 7 13.03.2009 00:04
Deletefile Killbrum Помощь студентам 5 14.09.2008 00:31