0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 19
1

Вылет при попытке открыть типизированный файл для чтения

12.03.2010, 22:05. Показов 1205. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
При двукратном нажатие на кнопку, для которой написана процедура, программа "вылетает".
Методом тыка выяснил, что "виновник" - reset(f), без него прога не вылетает.
Файл уже открывался в прошлом юните для записи, правда под другим именем, был закрыт
При вылете пишет "project raised exception class 'runerror(5)'"

фрагмент кода
Delphi
1
2
3
4
5
6
procedure TForm5.Button1Click(Sender: TObject);
var f: file of longint;
begin
    assignfile (f, 'file2.dat');
    reset(f);
end;
Help!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2010, 22:05
Ответы с готовыми решениями:

Вылет программы при попытке открыть файл
Добрый день. Столкнулся с такой ситуёвиной. При попытке открыть файл функцией CreateFile если в...

При попытке открыть файл: "Не могу найти нужный парсер для файла"
Ребята, извините за глупый вопрос При попытке открыть файл сообщает об ошибке: "не могу найти...

Ошибка при попытке открыть файл
файл не читает, выдает ошибку , ну типо "ошибка открытия" вот текст #include "stdafx.h"...

Открыть файл для чтения, а если его нет, то создать его и открыть для записи
Здравствуйте! Подскажите, как сделать программу, чтобы она открывала файл для чтения, а если его...

5
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.03.2010, 06:40 2
Видимо ты где то забываешь закрыть файл вот у меня все работает
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var f: file of longint;
a,b: Longint;
begin
    a:= 1240809096;
    assignfile (f, 'file2.dat');
    reset(f);
    Write(f,a);
    while not Eof(f) do
begin
    Read(f,a);
end;
 
    Edit1.Text:= IntToStr(a);
    CloseFile(f);
end;
0
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 19
13.03.2010, 09:00  [ТС] 3
Спасибо!
действительно забыл закрыть...
0
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 19
13.03.2010, 22:02  [ТС] 4
можете подсказать, почему также вылетает и тут?

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
unit Unit5; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;
 
type
 
  { TForm5 }
 
  TForm5 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox4: TComboBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Memo1: TMemo;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form5: TForm5; 
 
implementation
{ TForm5 }
 
 
procedure TForm5.Button2Click(Sender: TObject);
begin
  form5.close;
end;
 
procedure TForm5.Button1Click(Sender: TObject);
var f: file of longint;
    I, doxint, rasxint: longint;
    Rasx, Dox, St1, St2, St3, St4, St5, maxst, minst: double;
    Day, Month, year, stat: integer;
    max, min: string;
begin
    assignfile (f, 'file2.dat');
    reset(f);
    if system.filesize(f)>=5 then begin
    if radiobutton3.checked then begin
      st1:=0; st2:=0; st3:=0; st4:=0; st5:=0; minst:=0; maxst:=0;
      i:=0;
      rasx:=0;
      dox:=0;
      seek (f, 1);
      read (f, Day, Month, Year);
    repeat
      seek (f, i);
       read (f, stat);
      i:=i+3;
      seek (f, i);
       read(f, doxint);
      i:=i+1;
      seek (f, i);
       read(f, rasxint);
      case stat of
        1: st1:=st1+doxint-rasxint;
        2: st2:=st2+doxint-rasxint;
        3: st3:=st3+doxint-rasxint;
        4: st4:=st4+doxint-rasxint;
        5: st5:=st5+doxint-rasxint;
      end;
      dox:=dox+doxint;
      rasx:=rasx+rasxint;
      I:=i+1;
      seek (f, i);
    until i>=system.filesize(f);
 
   if (st1>st2) and (st1>st3) and (st1>st4) and (st1>st5) then begin max:='Другое'; maxst:=st1; end else
     if (st2>st1) and (st2>st3) and (st2>st4) and (st2>st5) then begin max:='Зарплата'; maxst:=st2; end else
      if (st3>st1) and (st3>st2) and (st3>st4) and (st3>st5) then begin max:='Транспорт'; maxst:=st3; end else
       if (st4>st1) and (st4>st2) and (st4>st3) and (st4>st5) then begin max:='Продукты'; maxst:=st4; end else begin max:='Комм. плат.'; maxst:=st5 end;
 
    if (st1<st2) and (st1<st3) and (st1<st4) and (st1<st5) then begin min:='Другое'; minst:=st1; end else
     if (st2<st1) and (st2<st3) and (st2<st4) and (st2<st5) then begin min:='Зарплата'; minst:=st2; end else
      if (st3<st1) and (st3<st2) and (st3<st4) and (st3<st5) then begin min:='Транспорт'; minst:=st3; end else
       if (st4<st1) and (st4<st2) and (st4<st3) and (st4<st5) then begin min:='Продукты'; minst:=st4; end else begin min:='Комм. плат.'; minst:=st5; end;
 
    Memo1.Clear;
    Memo1.Lines.Add('Общие доходы '+FloatToStr(dox)+#13+#10+
                    'Общие расходы '+FloatToStr(rasx)+#13+#10+
                    'Баланс '+FloatToStr(Dox-rasx)+#13+#10+
                    'Cамая доходная статья '+#13+#10+max+' ('+FloatToStr(maxst)+')'+#13+#10+
                    'Самая расходная статья'+#13+#10+min+' ('+FloatToStr(minst)+')'+#13+#10+#13+#10+
                    'Начало ведения баланса '+IntToStr(day)+'.'+IntToStr(month)+'.'+IntToStr(year));
end;
end else showmessage ('Вы должны начать пользоватся программой, что бы смотреть статстику');
 
    closefile(f);
end;
 
initialization
  {$I unit5.lrs}
 
end.
При вылете пишет "project raised exception class 'runerror(100)'"
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
13.03.2010, 22:23 5
100 Disk read error (Ошибка чтения с диска).
Генерируется процедурой READ в типизированном файле в случае, если Вы пытаетесь осуществить считывание из полностью прочитанного файла.
Вот это неправильно
until i>=system.filesize(f);
нужно
until i>=system.filesize(f)-1;
Да читать начинаете со второй записи seek (f, 1);
В типизированном файле нумерация от 0 до filesize(f)-1, как в приличном обществе.
1
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 19
13.03.2010, 23:48  [ТС] 6
Цитата Сообщение от Puporev Посмотреть сообщение
Да читать начинаете со второй записи seek (f, 1);
в этом случае мне именно нужно было прочитать 2,3,4 записи

Спасибо!
0
13.03.2010, 23:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2010, 23:48
Помогаю со студенческими работами здесь

Ошибка при попытке открыть текстовый файл
При попытке открыть текстовый файл типа txt, выдает ошибку.

При попытке открыть файл он отправляется на печать
Не знаю, что делали на работе с этим ПК, но в контекстном меню всех файлов вместо Открыть появилась...

Программа вылетает при попытке открыть файл
#include&lt;iostream.h&gt; #include&lt;windows.h&gt; #include&lt;conio.h&gt; #include&lt;fstream.h&gt; const int L=31;...

Ошибка при попытке открыть файл в видео-проигрывателе
Подскажите, пожалуйста, почему возникает эта ошибка при событии button3_Click (открыть файл)?...

Ошибка при попытке открытия для чтения текстового файла
Первоначальная задача была такова: Дан файл А, компоненты которого являются целыми числами....

Не может открыть файл для чтения
Почему-то после закрытия не открывается файл F2? На последнем шаге программы(99 строка) срабатывает...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru