![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Access Violation
Andrewtitoff © (2009-02-11 10:11:00)Здравствуйте!, подскажите пожалуйста что тут не так?, выскакивает ошибка Access Violation at adress 00404D68 in module 'otchet.exe'. Read of adrdress 403DFFF8
ShowMessage(
' Бригада 1: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),1]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),1]]])+#13#10+
' Бригада 2: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),2]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),2]]])+#13#10+
' Бригада 3: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),3]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),3]]])+#13#10+
' Бригада 4: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),4]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),4]]])+#13#10+
' Бригада 5: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),5]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),5]]])+#13#10+
' Бригада 6: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),6]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),6]]])+#13#10+
' Бригада 7: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),7]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),7]]])+#13#10+
' Бригада 8: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),8]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),8]]])+#13#10+
' Бригада 9: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),9]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),9]]])+#13#10+
'Бригада 10: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),10]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),10]]])+#13#10+
'Бригада 11: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),11]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),11]]])+#13#10+
'Бригада 12: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),12]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),12]]])+#13#10+
'Бригада 13: '+Format('%.4d',[brig[uch[strtoint(Form1.ComboBox8.Text),13]]])+'/'+Format('%f', [brigt[uch[strtoint(Form1.ComboBox8.Text),13]]]));
Anatoly Podgoretsky (2009-02-11 11:55:00) [21]> Andrewtitoff (11.02.2009 11:51:46) [46]
Когда AV выскакивает, то может любая строчка выделяться...
Сергей М. (2009-02-11 11:53:00) [22]
> Andrewtitoff © (11.02.09 11:51) [46]
Причем здесь это ?
Ты пошагово(F7) прошел до строчки, при выполнении которой начинаются чудеса ?
Andrewtitoff (2009-02-11 11:51:00) [23]2 Сергей М.
Когда AV выскакивает почему то эта строчка выделяется...
Сергей М. (2009-02-11 11:48:00) [24]
> Andrewtitoff © (11.02.09 11:28) [40]
>
> На строчке end;
> в процедуре
> procedure TForm1.Button3Click(Sender: TObject);
А как ты там оказался ?
> ничего не понял
Это печально. Очень.
Anatoly Podgoretsky (2009-02-11 11:44:00) [25]> Andrewtitoff (11.02.2009 11:36:43) [43]
Тебе не понять про что мы.
Andrewtitoff (2009-02-11 11:36:00) [26]2 Anatoly Podgoretsky
Куда принимать?
2 Плохиш
Вы вообще про что?...
Плохиш (2009-02-11 11:34:00) [27]
> Нахрен надо было принимать.
Папик, видно, попросил.
Anatoly Podgoretsky (2009-02-11 11:30:00) [28]
> а так да... за такой код - эцих с гвоздями на неделю, с
> последующим увольнением
Нахрен надо было принимать.
Andrewtitoff (2009-02-11 11:28:00) [29]2 Сергей М.
На строчке
end;
в процедуре
procedure TForm1.Button3Click(Sender: TObject);
2 aik
Ставил..., все равно AV, ое ее почеиму то игнорирует...
2 Ega23
А как без with, через переменную что ли делать?, остальное исправвил.
2 All
Я ничего не понял, но похоже Ega23 был прав все дело в многократных вычислениях strtoint(Form1.ComboBox8.Text), вот так все заработало:
begin
for n := 1 to 13 do
begin
uch[1,n]:=uch1[n];
uch[2,n]:=uch2[n];
uch[6,n]:=uch6[n];
uch[7,n]:=uch7[n];
uch[8,n]:=uch8[n];
end;
for n := 101 to 813 do
begin
brig[n]:=0;
brigt[n]:=0;
end;
d1 := 20;
if s=1 then m1:=12 else m1 := s-1;
if s=1 then y1:=strtoint(Form1.Combobox9.Text)-1 else y1 := strtoint(Form1.Combobox9.Text);
d2 := 20;
m2 := s;
y2 := strtoint(Form1.Combobox9.Text);
For nLikeADate:=Trunc(EncodeDate(y1,m1,d1)) to Trunc(EncodeDate(y2,m2,d2)) Do
Begin
if fileexists(MD+'\Z\'+DateToStr(nLikeADate)+'.lft') then
Begin
with TFileStream.create(MD+'\Z\'+DateToStr(nLikeADate)+'.lft', fmShareDenyNone) do
try
c:=trunc(Size/671);
finally
Free;
end;
with TFileStream.create(MD+'\Z\'+DateToStr(nLikeADate)+'.lft',fmOpenRead) do
try
read(sms,671);
for count := 1 to c-1 do
begin
read(sms,671);
if {(sms.PLACE=Form1.ComboBox8.Text)and}(sms.Remont<>'Простой') then
begin
if (isNumber(sms.BRIGADE))and(sms.BRIGADE<>'') then
begin
k:=strtoint(sms.BRIGADE);
inc(brig[k]);
end
else k:=0;
if (copy(sms.Remont,3,1)='.')and(copy(sms.Remont,6,1)='.') then
brigt[strtoint(sms.BRIGADE)]:=brigt[strtoint(sms.BRIGADE)]+0.5 else
Begin
uh:=copy(sms.Prostoy,1,2);
um:=copy(sms.Prostoy,4,2);
if uh='' then uh:='0';
if um='' then um:='0';
if isNumber(um)and isNumber(uh)then
Begin
o:=strtoint(um)/60;
o:=o+strtoint(uh);
brigt[k]:=brigt[k]+o;
End;
End;
end;
end;
finally
Free;
end;
end;
end;
f:=strtoint(Form1.ComboBox8.Text);
ShowMessage(
' Бригада 1: '+Format('%.4d',[brig[uch[f,1]]])+'/'+Format('%f', [brigt[uch[f,1]]])+#13#10+
' Бригада 2: '+Format('%.4d',[brig[uch[f,2]]])+'/'+Format('%f', [brigt[uch[f,2]]])+#13#10+
' Бригада 3: '+Format('%.4d',[brig[uch[f,3]]])+'/'+Format('%f', [brigt[uch[f,3]]])+#13#10+
' Бригада 4: '+Format('%.4d',[brig[uch[f,4]]])+'/'+Format('%f', [brigt[uch[f,4]]])+#13#10+
' Бригада 5: '+Format('%.4d',[brig[uch[f,5]]])+'/'+Format('%f', [brigt[uch[f,5]]])+#13#10+
' Бригада 6: '+Format('%.4d',[brig[uch[f,6]]])+'/'+Format('%f', [brigt[uch[f,6]]])+#13#10+
' Бригада 7: '+Format('%.4d',[brig[uch[f,7]]])+'/'+Format('%f', [brigt[uch[f,7]]])+#13#10+
' Бригада 8: '+Format('%.4d',[brig[uch[f,8]]])+'/'+Format('%f', [brigt[uch[f,8]]])+#13#10+
' Бригада 9: '+Format('%.4d',[brig[uch[f,9]]])+'/'+Format('%f', [brigt[uch[f,9]]])+#13#10+
'Бригада 10: '+Format('%.4d',[brig[uch[f,10]]])+'/'+Format('%f', [brigt[uch[f,10]]])+#13#10+
'Бригада 11: '+Format('%.4d',[brig[uch[f,11]]])+'/'+Format('%f', [brigt[uch[f,11]]])+#13#10+
'Бригада 12: '+Format('%.4d',[brig[uch[f,12]]])+'/'+Format('%f', [brigt[uch[f,12]]])+#13#10+
'Бригада 13: '+Format('%.4d',[brig[uch[f,13]]])+'/'+Format('%f', [brigt[uch[f,13]]]));
end;
aik (2009-02-11 11:12:00) [30]
> Andrewtitoff © (11.02.09 11:01) [30]
> 2 ПлохишF8 - не помогает.., останавливается в процедуре
> procedure TForm1.Button3Click(Sender: TObject);
есть такая красная точечка которую можно поставить слева от первого бегина
> begin
> for n := 1 to 13 doBegin
нажав на синею точечку запустить программу нажать на кнопку и потом кликать на F8, F7 и следить где именно выходит ошибка
Германн (2009-02-11 11:11:00) [31]
> Сергей М. © (11.02.09 11:09) [34]
>
>
> > п-ц... какой-то....
> >
>
>
> Дом-2
> Andrewtitoff © (11.02.09 11:09) [35]
>
> 2 Сергей М
> Дальше AV
Эт точно! Дурдом-2!
Ega23 (2009-02-11 11:11:00) [32]
> Дом-2
В "Доме" у некоторых участников хотя бы сиськи есть. А тут...
Сергей М. (2009-02-11 11:10:00) [33]
> Andrewtitoff © (11.02.09 11:09) [35]
> Дальше AV
На какой строчке ?
Andrewtitoff (2009-02-11 11:09:00) [34]2 Сергей М
Дальше AV
Сергей М. (2009-02-11 11:09:00) [35]
> п-ц... какой-то....
>
Дом-2
Плохиш (2009-02-11 11:06:00) [36]
> Andrewtitoff © (11.02.09 11:01) [30]
>
> 2 Плохиш
> F8 - не помогает
Так он просто так не помогает, его прикормить и приласкать надо.
PS. Во всех версиях делфи имеется окошко Watch, в которое можно вывести значения каких-либо переменных.
Ega23 (2009-02-11 11:06:00) [37]Это п-ц... какой-то....
Теперь по порядку.
1. Перепиши код без with. У тебя там вложенные встречаются, причём достаточно бездумно.
2. strtoint(Form1.ComboBox8.Text) и прочие подобные перлы должны быть вычеслены один раз. А по ходу уже значение вычесленной переменной использовать.
3. Код не просто ужасен, а (я даже слов таких не знаю). Короче, с вероятностью 0.999 в этом говнокоде никто разбираться не будет.
Сергей М. (2009-02-11 11:04:00) [38]
> останавливается в процедуре
Это хорошо.
ну а дальше ?
Andrewtitoff (2009-02-11 11:01:00) [39]2 Плохиш
F8 - не помогает.., останавливается в процедуре procedure TForm1.Button3Click(Sender: TObject);
Andrewtitoff (2009-02-11 11:00:00) [40]И так на каждуй месяц