|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.04.2011, 21:12 | #1 |
Регистрация: 26.03.2011
Сообщений: 3
|
Ошибка "Access violation at address 004043A8 in module 'Project1.exe'. Read of address 00FF5A53."
Здравствуйте! Я не сильно разбираюсь в Делфи, делала большой проект и на последней части при нажатии кнопки выходит такая ошибка. Функция:
Вообще он считывает из заполненной таблицы знак и относительно него производит какое либо действие, описанное в функции. Вся программы очень большая.. я не знаю что делать procedure TForm1.Button2Click(Sender: TObject); var i,j,k,x,y,l,m,len,num,p,r:integer; lec,res,svalue,lastterm,current_rul e,current_stek,pravila:string; flag:boolean; stek:array[0..1,0..100] of string; rule:array[0..19] of string; usedrules: array of integer; lecsem:array[0..100] of string; dopID:array[0..100] of string; dopKon:array[0..100] of string; ZZ,ZZ1,A1,A2,A,A4,A3,TekVer:TTreeNo de; begin pravila:=''; TreeView1.Items.Clear; stek[0,0]:='t'; stek[1,0]:='*H'; rule[0] := 'progFend.;'; rule[1] := 'F;F'; rule[2] := 'if(F)thenFelseFendif'; rule[3] := 'if(F)thenFendif'; rule[4] := 'beginFend'; rule[5] := 'forFtodoF'; rule[6] := 'forFdowntoFdo'; //итд// num:=0; SetLength(usedrules, 0); i:=1; j:=0; p:=0; r:=0; while StringGrid4.cells[1,i]<>' ' do begin lecsem[i-1]:=StringGrid4.cells[1,i]; i:=i+1; end; lecsem[i-1]:='*K'; while (lec<>'*K') or (num<>1) or (stek[1,1]<>'F') do begin x:=1;y:=1;flag:=false; lec:=lectype(lecsem[j]); if lec='a' then begin dopID[p]:=lecsem[j]; p:=p+1; end; if lec='c' then begin dopKon[r]:=lecsem[j]; r:=r+1; end; k:=num; while stek[0,k]<>'t' do begin k:=k-1; end; lastterm:= stek[1,k]; while lastterm<>StringGrid3.Cells[0,y] do y:=y+1; while lec<>StringGrid3.Cells[x,0] do x:=x+1; res:=StringGrid3.Cells[x,y]; if res='' then begin MessageDlg(Некорректная конструкция предложения!!!',mtWarning,[mbOk],0); break; end; if (res='<.') or (res='=.') then begin num:=num+1; stek[0,num] := 't'; stek[1,num] := lec; j:=j+1; end else begin current_stek := ''; for l:=num downto 0 do //ïåðåáèðàåì çàïèñè ñòåêà (îáúåäèíÿÿ èõ) begin current_stek := stek[1,l] + current_stek; for k:=0 to 19 do begin current_rule := rule[k]; if current_stek=current_rule then begin if flag=false then begin flag := true; len := length(usedrules); SetLength(usedrules, len +1); usedrules[len] := k; num := l; end else begin len := length(usedrules); usedrules[len-1] := k; num := l; end; end; end; end; stek[0,num] := 'n'; stek[1,num] := 'F'; if flag = false then begin MessageDlg('Некорректная конструкция предложения!!!',mtWarning,[mbOk],0);break; end; end; end; TekVer:=TreeView1.Items.Add(nil,'F' ); for m:= length(usedrules)-1 downto 0 do begin pravila:=pravila+inttostr(usedrules[m])+' '; //memo2.Lines.Add(pravila); case usedrules[m] of 0: begin A1:=TreeView1.Items.AddChild(TekVer ,'prog');ZZ:=TreeView1.Items.AddChi ld(TekVer,'F');A:=TreeView1.Items.A ddChild(TekVer,'end.');end; //и т д// end; if (usedrules[m]=18) or (usedrules[m]=19) then TekVer:=ZZ1 else TekVer:=ZZ; end; MessageDlg('Использованные правила: '+pravila,mtInformation,[mbOk],0); end; Вообще если кто сможет мне помочь я бы была очень признательна, возможна помощь за вознаграждение. |
14.04.2011, 21:16 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
1. Оформите код(), тогда будет понятно что текст а что код.
2. Попробуйте подключить MadExcept. |
14.04.2011, 21:36 | #3 |
Регистрация: 26.03.2011
Сообщений: 3
|
помоги мне пожалуйста я не соображаю :D я тебе в асю написала в обе :DDD
моя 193473639 Последний раз редактировалось ms.Karishka; 14.04.2011 в 21:43. |
14.04.2011, 21:44 | #4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Выделяешь вставленныю тобою в сообщение ко, тыкашь на кнопочку
p.S. отписался... Последний раз редактировалось Человек_Борща; 14.04.2011 в 21:47. |
14.04.2011, 21:49 | #5 |
Регистрация: 26.03.2011
Сообщений: 3
|
Здравствуйте! Я не сильно разбираюсь в Делфи, делала большой проект и на последней части при нажатии кнопки выходит такая ошибка. Функция:
Вообще он считывает из заполненной таблицы знак и относительно него производит какое либо действие, описанное в функции. Вся программы очень большая.. я не знаю что делать Код:
|
14.04.2011, 22:18 | #7 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,883
|
всё равно такая каша... удавиться ведь можно... Вы чтоли взяли программу на паскале и впихнули её в 1 обработчик клика по кнопке ??
чтобы мы Вам могли помочь вы скиньте весь код проектом (заархивируйте папочку со всем кодом и вложением на форум кидайте) и укажите на какой строчке кода дельфи указывает ошибку и действия которые к этому приводят Вроде по замыслу программы и по прикидкам, Вы где-то косячите с памятью, у вас есть дин массив, может выходите за его пределы (ошибка - про считывание памяти в "середине"), или ещё что-то такое |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка: " class EAccessViolatiossViolation with n with message 'Access violation at address 0052D1D5..." | lutdan | Помощь студентам | 4 | 02.04.2011 04:29 |
Access violation at address 00447E73 in modul Project.exe. Read of address 00000057. | ArtGrek | Общие вопросы Delphi | 40 | 12.03.2011 22:03 |
Access violation at address 00478D0E in module 'Project1.exe'. Write of address 00000000 | fondreykus-1 | Общие вопросы Delphi | 5 | 27.01.2010 14:25 |
Access violation at address 00456215 in module Autorun.exe. | alexandrov28 | Свободное общение | 4 | 30.09.2009 21:41 |
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. | Fen1x | Общие вопросы Delphi | 8 | 13.10.2007 20:13 |