Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
ВнизAccess Violation Найти похожие ветки
← →
Andrewtitoff © (2009-02-11 10:11) [0]Здравствуйте!, подскажите пожалуйста что тут не так?, выскакивает ошибка 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]]]));
← →
Andrewtitoff © (2009-02-11 10:12) [1]
brig : array[101..813] of integer;
brigt : array[101..813] of real;
uch : array[1..8,1..13]of integer;
← →
Ega23 © (2009-02-11 10:15) [2]Пипец. А один раз strtoint(Form1.ComboBox8.Text) вычислить - религия не позволяет?
← →
Сергей М. © (2009-02-11 10:15) [3]У отладчика не пробовал спросить ?
Ему виднее)
← →
DrPass © (2009-02-11 10:19) [4]Вы смотрели краткое содержание сериала "Бригада"...
← →
Германн © (2009-02-11 10:19) [5]Количество бригад надо либо уменьшить, либо увеличить!
Бо 13 - плохое число. Имхо и AV из-за этого :(
← →
Palladin © (2009-02-11 10:20) [6]я вообще сомневаюсь, что
1. form1 существует
2. в кобобоксе8 в тексте стоит число
а так да... за такой код - эцих с гвоздями на неделю, с последующим увольнением
← →
Ega23 © (2009-02-11 10:27) [7]
> в кобобоксе8 в тексте стоит число
Это было бы всё-таки EConvertError, а не AV.
← →
Andrewtitoff © (2009-02-11 10:31) [8]2 Palladin
form1 - существует
var
Form1: TForm1;
В комбо боксе - точно число!
т.к. Style : csOwnerDrawFixed
и в Items просто забито:
1
2
6
7
8
при чем так все работает:
For f:=1 to 13 do
Begin
StringGrid1.Cells[1,f]:=Format("%.4d",[brig[uch[strtoint(Form1.ComboBox8.Text),f]]]);
StringGrid1.Cells[2,f]:=Format("%f", [brigt[uch[strtoint(Form1.ComboBox8.Text),f]]]);
End;
← →
Германн © (2009-02-11 10:35) [9]
> при чем так все работает:
Всё страньше и страньше! (с)
← →
Ega23 © (2009-02-11 10:36) [10]
> form1 - существует
>
> var
> Form1: TForm1;
LOL!
на тебе код:procedure TForm1.Button1OnClick(Sender : TObject);
var
bmp : TBitmap;
begin
bmp.LoadFromFile("D:\test.bmp");
Image1.Picture.Assign(bmp);
end;
Как ты думаешь, почему на первой же строчке у тебя AV вывалится?
← →
Sergey13 © (2009-02-11 10:37) [11]> [5] Германн © (11.02.09 10:19)
> Количество бригад надо либо уменьшить, либо увеличить!
У автора может отдельные программы на разное количество бригад. 8-)
← →
Andrewtitoff © (2009-02-11 10:40) [12]2 Ega23
Ну наверное потому что такого файла не существует....
А при чем тут Form1?, у меня же действительно существует.., ето единственная форма которая есть в проекте...
← →
Ega23 © (2009-02-11 10:41) [13]
> Ну наверное потому что такого файла не существует....
Всё понятно. Немедленно бери книжку в руки и читай про объекты, конструкторы, деструкторы и время жизни.
← →
Palladin © (2009-02-11 10:42) [14]у тебя одна одна единственная вот такая комманда выполняется, она единственная на форме, и она и только она выдает ошибку?
← →
AIK © (2009-02-11 10:45) [15]
> Ega23 © (11.02.09 10:41) [13]
http://www.delphisources.ru/pages/faq/base/access_violation.html
← →
Плохиш © (2009-02-11 10:49) [16]
> Andrewtitoff © (11.02.09 10:11)
>
> Здравствуйте!, подскажите пожалуйста что тут не так?, выскакивает
> ошибка
Вообще-то здесь конференция "Начинающим", а не служба удалённой отладки бредонедокода.
← →
Плохиш © (2009-02-11 10:51) [17]
> AIK © (11.02.09 10:45) [15]
Ты уверен, что Ega23 твоя ссылка нужна? Может всё-таки переадресуешь её аФФтару?
← →
aik © (2009-02-11 10:51) [18]
> AIK © (11.02.09 10:45) [15]
> > Ega23 © (11.02.09 10:41) [13]
Упс... извеняюсь адресовано на пост:
> Andrewtitoff © (11.02.09 10:40) [12]
> 2 Ega23Ну наверное потому что такого файла не существует.
> ...А при чем тут Form1?, у меня же действительно существует.
> ., ето единственная форма которая есть в проекте...
← →
Andrewtitoff © (2009-02-11 10:53) [19]2 Ega23
bmp:=TBitmap.Create;
2 Palladin
Да она единственная выдает, она находится в процедуре, в процедуре задается один параметр(месяц), явно указанный (кнопка на каждый месяц)
при чем за один месяц почему то не выдает ошибку(ноябрь 2008), остальные месяцы - одинакова - AV, если нужно - могу полный код процедуры показать
← →
Palladin © (2009-02-11 10:53) [20]представь, да, нужно, и не только мне
← →
Andrewtitoff © (2009-02-11 10:54) [21]2 Ega23
bmp:=TBitmap.Create;
2 Palladin
Да она единственная выдает, она находится в процедуре, в процедуре задается один параметр(месяц), явно указанный (кнопка на каждый месяц)
при чем за один месяц почему то не выдает ошибку(ноябрь 2008), остальные месяцы - одинакова - AV, если нужно - могу полный код процедуры показать
← →
Ega23 © (2009-02-11 10:55) [22]
> http://www.delphisources.ru/pages/faq/base/access_violation.html
По данной ссылке:
TMyClass = class (TObject)
public
function Foo : string;
end;
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
{ TMyClass }
function TMyClass.Foo: string;
begin
Result := "TMyClass.Foo";
end;
procedure TForm2.Button1Click(Sender: TObject);
var
obj : TMyClass;
begin
ShowMessage(obj.Foo);
end;
:)
← →
aik © (2009-02-11 10:55) [23]
> при чем за один месяц почему то не выдает ошибку(ноябрь 2008)
Наверное это счастливый месяц )))
← →
Ega23 © (2009-02-11 10:56) [24]
> если нужно - могу полный код процедуры показать
Надо с этого начинать.
← →
Плохиш © (2009-02-11 10:57) [25]
> Andrewtitoff © (11.02.09 10:54) [21]
Маленький глупый партизан нафига ты сюда припёрся. Здесь не гестапо, партизанов не пытают, а мочат жестоко...
← →
Andrewtitoff © (2009-02-11 10:58) [26]2 Palladin
procedure TForm1.OtchetB(s : byte);
var
nLikeADate:Integer;
d1 : word;
m1 : word;
y1 : word;
d2 : word;
m2 : word;
y2 : word;
c : integer;
count : integer;
sms : MYString;
strc : Integer;
i,n : integer;
k : integer;
o : real;
uh : string;
um : string;
brig : array[101..813] of integer;
brigt : array[101..813] of real;
uch : array[1..8,1..13]of integer;
const
uch1 : array[1..13]of integer =(101,102,103,104,105,106,107,0,0,0,0,0,0);
uch2 : array[1..13]of integer =(201,202,203,204,205,206,207,208,209,210,211,0,0);
uch6 : array[1..13]of integer =(601,602,603,604,605,606,607,608,609,0,0,0,0);
uch7 : array[1..13]of integer =(701,702,0,704,705,0,0,0,0,0,0,0,0);
uch8 : array[1..13]of integer =(801,802,803,804,805,806,807,808,809,810,811,812,813);
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
brig[n]:=0;
for n := 101 to 813 do
brigt[n]:=0;
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;
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]]]));
end;
← →
Andrewtitoff © (2009-02-11 10:59) [27]
procedure TForm1.Button3Click(Sender: TObject);
begin
if combobox9.Text="" then ShowMessage("ОШИБКА: Введите все данные...") else
OtchetB(2);
end;
← →
Плохиш © (2009-02-11 11:00) [28]
> Ega23 © (11.02.09 10:56) [24]
>
>
> > если нужно - могу полный код процедуры показать
>
>
> Надо с этого начинать.
Вот тут ты не прав, о великий удалённый отладчик чужого бредокода, начинать надо было с F7/F8 ;-)
← →
Andrewtitoff © (2009-02-11 11:00) [29]И так на каждуй месяц
← →
Andrewtitoff © (2009-02-11 11:01) [30]2 Плохиш
F8 - не помогает.., останавливается в процедуре procedure TForm1.Button3Click(Sender: TObject);
← →
Сергей М. © (2009-02-11 11:04) [31]
> останавливается в процедуре
Это хорошо.
ну а дальше ?
← →
Ega23 © (2009-02-11 11:06) [32]Это п-ц... какой-то....
Теперь по порядку.
1. Перепиши код без with. У тебя там вложенные встречаются, причём достаточно бездумно.
2. strtoint(Form1.ComboBox8.Text) и прочие подобные перлы должны быть вычеслены один раз. А по ходу уже значение вычесленной переменной использовать.
3. Код не просто ужасен, а (я даже слов таких не знаю). Короче, с вероятностью 0.999 в этом говнокоде никто разбираться не будет.
← →
Плохиш © (2009-02-11 11:06) [33]
> Andrewtitoff © (11.02.09 11:01) [30]
>
> 2 Плохиш
> F8 - не помогает
Так он просто так не помогает, его прикормить и приласкать надо.
PS. Во всех версиях делфи имеется окошко Watch, в которое можно вывести значения каких-либо переменных.
← →
Сергей М. © (2009-02-11 11:09) [34]
> п-ц... какой-то....
>
Дом-2
← →
Andrewtitoff © (2009-02-11 11:09) [35]2 Сергей М
Дальше AV
← →
Сергей М. © (2009-02-11 11:10) [36]
> Andrewtitoff © (11.02.09 11:09) [35]
> Дальше AV
На какой строчке ?
← →
Ega23 © (2009-02-11 11:11) [37]
> Дом-2
В "Доме" у некоторых участников хотя бы сиськи есть. А тут...
← →
Германн © (2009-02-11 11:11) [38]
> Сергей М. © (11.02.09 11:09) [34]
>
>
> > п-ц... какой-то....
> >
>
>
> Дом-2
> Andrewtitoff © (11.02.09 11:09) [35]
>
> 2 Сергей М
> Дальше AV
Эт точно! Дурдом-2!
← →
aik © (2009-02-11 11:12) [39]
> Andrewtitoff © (11.02.09 11:01) [30]
> 2 ПлохишF8 - не помогает.., останавливается в процедуре
> procedure TForm1.Button3Click(Sender: TObject);
есть такая красная точечка которую можно поставить слева от первого бегина
> begin
> for n := 1 to 13 doBegin
нажав на синею точечку запустить программу нажать на кнопку и потом кликать на F8, F7 и следить где именно выходит ошибка
← →
Andrewtitoff © (2009-02-11 11:28) [40]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;
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.007 c