Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3

В программе появляется ошибка(Access violation)б если используется большой файл

19.05.2010, 20:43. Показов 1111. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане. Нужна ваша помощь(срочно) - завтра -крайний срок.
Это программа для поискаинформации о книгах в текстовом файле. Программа работает, когда файл по размеру меньше 180 Кб, а если больше, то при выполнении программы выводится ошибка - access violation
Ниже основной код программы. Помогите найти ошибку!!!
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
 procedure TForm1.Button1Click(Sender: TObject);
var f: textfile;
a,c,c1,c3:string;
i,j,n,k,l,p1,p2,p3,p4,p5,n1,n2,n3,n4,n5: integer;
 
begin
if (CheckBox1.Checked=false)and(CheckBox2.Checked=false)and(CheckBox3.Checked=false)and(CheckBox4.Checked=false)and(CheckBox5.Checked=false)then begin
Showmessage('Вы не выбрали категорию!');
end
else begin
form1.Visible:=false;
form2.Visible:=true;
form2.StringGrid1.RowCount:=2;
form2.StringGrid1.Cells[0,1]:=' ';
new(poisk);
new(rez);
if form1.CheckBox1.Checked=true
then begin
 
c:=form1.edit1.Text;
c:=Upper(c);
poisk^.Avtor:=c;
n1:=0;
end
else begin
poisk^.Avtor:='';
n1:=1;
end;
 
 
if form1.CheckBox2.Checked=true
then begin
c:=form1.edit2.Text;
c:=Upper(c);
poisk^.Zaglavie:=c;
n2:=0;
end
else begin
poisk^.Zaglavie:='';
n2:=1;
end;
if form1.CheckBox3.Checked= true
then begin
c:=form1.edit3.Text;
poisk^.ISSN:=c;
n3:=0;
end
else begin
poisk^.ISSN:='';
n3:=1;
end;
 
if form1.CheckBox4.Checked=true
then begin
c:=form1.edit4.Text;
poisk^.God:=c;
n4:=0;
end
else begin
poisk^.God:='';
n4:=1;
end;
 
if form1.CheckBox5.Checked= true
then begin
c:=form1.edit5.Text;
c:=Upper(c);
poisk^.Klych:=c;
n5:=0;
end
else begin
poisk^.God:='';
n5:=1;
end;
 
AssignFile(f, '2.txt');
Reset(f);
n:=0;
k:=1;
 
while not Eof(f) do begin
readln(f,a);
 
 
 
if pos('#210', a)<>0 then begin
i:=pos('^D',a);
c:=copy(a,i+2,4);
rez^.God:=c;
i:=pos('^C',a);
j:=length(a)-i;
c:=copy(a,i+2,j);
i:=pos('^',c);
j:=length(c);
delete(c,i,j-i);
rez^.Izdat:=c;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
i:=pos('^A',a);
j:=length(a)-i;
c:=copy(a,i+2,j);
i:=pos('^',c);
j:=length(c);
delete(c,i,j-i);
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
rez^.Gorod:=c;
end;
 
if pos('#200:', a)<>0 then begin
j:=length(a)-8;
c:=copy(a,9,j);
c1:=copy(a,9,j);
c3:='. ';
i:=pos('^E',c);
if i<>0 then begin
delete(c,i,2);
insert(c3,c,i);
end;
i:=pos('^F',c);
if i<>0 then begin
delete(c,i,2);
insert(c3,c,i);
end;
while pos('^', c)<>0 do begin
i:=pos('^', c);
delete(c, i+1,1);
c[i]:=' ';
end;
rez^.Zaglavie:=c;
while pos('^',c1)<>0 do begin
i:=pos('^',c1);
j:=length(c1);
delete(c1,i,j-i+1);
end;
rez^.Nazv:=c1;
end;
 
 
 
if pos('#10:', a)<>0 then begin
c:=copy(a,8,13);
rez^.ISSN:=c;
end;
 
if pos('#90:', a)<>0 then begin
c:=copy(a,10,17);
rez^.Udk:=c;
end;
 
if pos('#686:', a)<>0 then begin
i:=length(a)-7;
c:=copy(a,7,i);
rez^.Shifr:=c;
end;
 
if pos('#610', a)<>0 then begin
j:=length(a)-7;
c:=copy(a,7,j+1);
c:=concat(c,',');
c:=concat(c,' ');
while pos('^', c)<>0 do begin
i:=pos('^', c);
delete(c, i+1,1);
c[i]:=' ';
end;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
c:=Lower(c);
rez^.Klych:=rez^.Klych+c;
end;
 
if pos('#606', a)<>0 then begin
j:=length(a)-9;
c:=copy(a,9,j);
c:=concat(c,' ');
while pos('^', c)<>0 do begin
i:=pos('^', c);
c[i]:=',';
c[i+1]:=' ';
end;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
rez^.Klych:=rez^.Klych+c;
end;
 
 
if pos('#701', a)<>0 then begin
j:=length(a)-9;
c:=copy(a,9,j);
c:=concat(c,', ');
while pos('^', c)<>0 do begin
i:=pos('^', c);
delete(c, i+1,1);
c[i]:=' ';
end;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
rez^.Avtor:=rez^.Avtor+c;
end;
if pos('#700', a)<>0 then begin
l:=pos('^G',a);
j:=length(a)-l-9;
c:=copy(a,9,j);
c:=concat(c,' ');
while pos('^', c)<>0 do begin
i:=pos('^', c);
delete(c, i+1,1);
c[i]:=' ';
end;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
rez^.Avtor:=rez^.Avtor+c;
j:=length(a)-7;
c:=copy(a,9,j);
i:=pos('^G',c);
l:=pos('^B',c);
c[l]:=' ';
delete(c, l+1,i-l+1);
while pos('^', c)<>0 do begin
i:=pos('^', c);
delete(c, i+1,1);
c[i]:=' ';
end;
for i:=0 to length(c)-1 do begin
if c[i] in ['0'..'9'] then delete(c,i,1);
end;
rez^.Avtorp:=c;
end;
 
if pos('*****',a)<>0 then begin
if n1=0 then begin
c:=poisk^.Avtor;
c1:=rez^.Avtor;
if pos(c,c1)<>0 then begin
p1:=1;
end
else begin p1:=0 end;
end
else p1:=1;
 
if n2=0 then begin
c:=poisk^.Zaglavie;
c1:=rez^.Zaglavie;
if pos(c,c1)<>0 then begin
p2:=1;
end
else begin p2:=0 end;
end
else p2:=1;
 
if n3=0 then begin
c:=poisk^.ISSN;
c1:=rez^.ISSN;
if pos(c,c1)<>0 then begin
p3:=1;
end
else begin p3:=0 end;
end
else p3:=1;
 
if n4=0 then begin
c:=poisk^.God;
c1:=rez^.God;
if pos(c,c1)<>0 then begin
p4:=1;
end
else begin p4:=0 end;
end
else p4:=1;
 
if n5=0 then begin
c:=poisk^.Klych;
c1:=rez^.Klych;
if pos(c,c1)<>0 then begin
p5:=1;
end
else begin p5:=0 end;
end
else p5:=1;
 
if (p1=1)and (p2=1)and (p3=1)and (p4=1)and (p5=1) then begin
new(knigamas[k]);
      knigamas[k].Avtor:=rez.Avtor;
      knigamas[k].Zaglavie:=rez.Zaglavie;
      knigamas[k].ISSN:=rez.ISSN;
      knigamas[k].God:=rez.God;
      knigamas[k].Klych:=rez.Klych;
      knigamas[k].Shifr:=rez.Shifr;
      knigamas[k].Avtorp:=rez.Avtorp;
      knigamas[k].Izdat:=rez.Izdat;
      knigamas[k].Gorod:=rez.Gorod;
      knigamas[k].Udk:=rez.Udk;
      knigamas[k].Nazv:=rez.Nazv;
                k:=k+1;
    n:=n+1;
     end;
 
 
rez^.Avtor:='';
rez^.Zaglavie:='';
rez^.ISSN:='';
rez^.God:='';
rez^.Klych:='';
rez^.Shifr:='';
rez^.Avtorp:='';
rez^.Izdat:='';
rez^.Gorod:='';
rez^.Udk:='';
rez^.Nazv:='';
 
readln(f,a);
 
end;
end;
closefile(f);
 
for i:=0 to k-2 do begin
form2.StringGrid1.RowCount:=i+1;
form2.StringGrid1.Cells[0,i]:=inttostr(i);
form2.StringGrid1.Cells[1,i]:=knigamas[i].Avtor;
form2.StringGrid1.Cells[2,i]:=knigamas[i].Zaglavie;
form2.StringGrid1.Cells[3,i]:=knigamas[i].ISSN;
form2.StringGrid1.Cells[4,i]:=knigamas[i].God;
end;
 
if n=0 then begin  showmessage('Ничего не найдено!');
end;
dispose(poisk);
dispose(rez);
end;
end;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2010, 20:43
Ответы с готовыми решениями:

RAD Studio Android - ошибка access violation в программе
Здравствуйте форумчане! Вопрос созрел такой: Отлаживаю прогу в RAD Studio 10.1. Сначала под виндой. Убеждаюсь что всё считается...

При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка Access Violation
При попытке присвоить полям новой структуры значений типа AnsiString появляется ошибка. Как я понимаю это связано с памятью, но не пойму в...

Запуск DLL. При работе с потоками появляется ошибка "Access violation"
Здравствуйте, у меня вопрос. Я запускаю dll через консоль с помощью RUNDLL32.EXE В библиотеке описана функция ран, которая запускает...

5
КотЪ
 Аватар для Zabiyak
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
19.05.2010, 23:33
На какой строке ошибка вылазит?
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3
20.05.2010, 10:29  [ТС]
Этого я сказать не могу, программа выдает ошибку, а потом виснет.

Добавлено через 36 минут
Ошибка скорее всего при работе с файлом, но я не знаю где точно
0
116 / 58 / 6
Регистрация: 16.12.2009
Сообщений: 204
20.05.2010, 11:11
Трассировать программу умеете?

Добавлено через 34 минуты
Перейдите к строке
Delphi
1
AssignFile(f, '2.txt');
(в вашем примере 77 строка) и нажмите F5, слева появится красный кругляш - так называемая точка останова, когда программа в режиме отладки дойдет до этой точки, выполнение программы будет приостановленно и управление быдет передано в ваши руки. когда программа дойдет до точки останова начинайте нажимать F8 - перейти к следующей инструкции программы, и жмите F8 до тех пор пока не выскочит ошибка. Таким образом сможете определить, где у вас AV выскакивает.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
20.05.2010, 11:53
Проблема скорее всего здесь:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (p1=1)and (p2=1)and (p3=1)and (p4=1)and (p5=1) then begin
  new(knigamas[k]);
  knigamas[k].Avtor:=rez.Avtor;
  knigamas[k].Zaglavie:=rez.Zaglavie;
  knigamas[k].ISSN:=rez.ISSN;
  knigamas[k].God:=rez.God;
  knigamas[k].Klych:=rez.Klych;
  knigamas[k].Shifr:=rez.Shifr;
  knigamas[k].Avtorp:=rez.Avtorp;
  knigamas[k].Izdat:=rez.Izdat;
  knigamas[k].Gorod:=rez.Gorod;
  knigamas[k].Udk:=rez.Udk;
  knigamas[k].Nazv:=rez.Nazv;
  k:=k+1;
  n:=n+1;
end;
Когда значение в переменной K становится бОльшим, чем длина массива knigamas, тогда и происходит Акцесс виолейшн. Чтобы эту проблему исправить, надо либо в цикле по строкам файла поставить ограничение на К, либо использовать динамический массив. Лучше дин. массив применить.
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 3
20.05.2010, 16:41  [ТС]
Я создавала динамический список и записывала в него, вместо массива, но все равно когда файл до 180 кб работает, больше-нет

Добавлено через 17 минут
Но зато у меня есть время до субботы-воскресенья.

Добавлено через 13 секунд
Но зато у меня есть время до субботы-воскресенья.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2010, 16:41
Помогаю со студенческими работами здесь

совместный доступ из ASP к БД ACCESS. ошибка: файл используется другим
часто бывает, что при одновременной работе с базой нескольких польз. появл сообщение о том, что файл используется другим. (остается файлик...

Access violation в CGI программе
Здравствуйте, возникла проблемка. Создаю в Borland Builder 6 программу cgi, которую отображаю в браузере при этом стоит денвер 3. Все...

Access Violation в программе шифровки
Вот программа шифровки методом Вижинера. Почему выходит Access Violation? P.S Алгоритм желательно не трогать :)

Virtual Dub, ошибка во время рендеринга: An out-of-bounds memory access (access violation)
Virtual Dub ошибка во время рендинга, осталось совесем чуть чуть и тут ошыбка. Но так не со всеми видео,а с некоторыми.

Ошибка при Parent - нестабильная ошибка Access Violation
Добрый день. У меня возникает странная ошибка, раньше с такой не сталкивался. У меня есть свой класс визуального компонента, при его...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru