Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

Invalid pointer operation   Найти похожие ветки 

 
Phoenix ©   (2004-07-18 14:49) [0]

Такая проблема , бьюсь третий день
Есть класс
Pinv = class
    zavnum:array of string;
    invnum:array of string;
    sumind:array of  Double;
    sumbalind:array of Double;
    nudok:string[8];
    datedok:TDate;
    dateexp:tdate;
    sbname:string[80];
    k_sh:string[4];
    k_gr:string[2];
    k_objp:string[10];
    k_objn:string[10];
    nameobjr:string[255];
    nameobjk:string[255];
    edizm:string[10];
    spuch:integer;
    nazn:integer;
    norma:Double;
    istfin:string[10];
    model:string[255];
    indprizn:string[255];
    god:integer;
    sumbal:Double;
    sumizn:Double;
    sumtrans:Double;
    kolvo:smallint;
    kmol:string[6];
    prz:boolean;
 end;

Есть процедура которая с этим классом работает

procedure TFrmOprih.SBRigthClick(Sender: TObject);
var dob,dob2:PInv;
   i:integer;
   ListItem: TListItem;
begin
  SBminus.Enabled:=true;
  dob:=Pinv.Create;
  dob.nudok:=NdokEdit.Text;
  dob.datedok:=Datedok.Date;
  dob.dateexp:=Dateexp.Date;
  dob.k_sh:=CDSSub.fieldbyname("k_sh").AsString;
  dob.k_gr:=CDSSub.fieldbyname("k_gr").AsString;
  dob.sbname:=CDSSub.fieldbyname("name").AsString;
  dob.k_objp:=LKodObj.Caption;
  dob.k_objn:=kobj;
  dob.nameobjr:=MNameObj.Text;
  dob.nameobjk:=MNameObjk.Text;
  dob.edizm:=CDSEdIzm.fieldbyname("rname").AsString;
  dob.spuch:=RGSU.ItemIndex;
  dob.nazn:=RGIzn.ItemIndex;
  dob.norma:=normizn;
  dob.istfin:=CDSKrSch.fieldbyname("k_str").AsString;
  dob.model:=ENpaspor.Text;
  dob.indprizn:=EIndprizn.Text;
  dob.god:=strtoint(EGodvyp.Text);
  dob.sumbal:=strtofloat(ESumBal.text)*strtoint(EKolvo.text);
  dob.sumizn:=strtofloat(ESumIzn.Text)*strtoint(EKolvo.text);
  dob.sumtrans:=strtofloat(ETransp.Text);
  dob.kolvo:=strtoint(EKolvo.text);
  mdprz.First;
  SetLength(dob.zavnum,strtoint(EKolvo.Text));
  SetLength(dob.invnum,strtoint(EKolvo.Text));
  SetLength(dob.sumind,strtoint(EKolvo.Text));
  SetLength(dob.sumbalind,strtoint(EKolvo.Text));
  for i:=1 to strtoint(EKolvo.Text) do
  begin
     dob.zavnum[i]:=MDPrz.fieldbyname("znum").asString;
     dob.invnum[i]:=MDPrz.fieldbyname("inum").asString;
     dob.sumind[i]:=strtofloat(ESumBal.text);
     dob.sumbalind[i]:=strtofloat(ESumIzn.Text);
     mdprz.Delete;
     MDPrz.Next;
  end;
  dob.kmol:=CDSMol.fieldbyname("tabnum").AsString;
  dob.prz:=false;
  if lv.Items.Count<>0 then lv.Items[LV.Items.Count-1].Delete;
  ListItem:=LV.Items.Add;
  ListItem.Data:=dob;
  ListItem.caption:=LKodObj.Caption;
  ListItem.SubItems.Add(EKolvo.Text);
  ListItem.SubItems.Add(floattostr(strtofloat(ESumBal.text)*strtoint(EKolvo.text)));
  ListItem.SubItems.Add(floattostr(strtofloat(ESumIzn.text)*strtoint(EKolvo.text)));
  dob2:=Pinv.Create;
  dob2.prz:=true;
  ListItem:=LV.Items.Add;
  ListItem.Data:=dob2;
  ListItem.caption:="&#205;&#238;&#226;&#251;&#233; &#253;&#235;&#229;&#236;&#229;&#237;&#242;...";  
  sumb:=sumb+strtofloat(ESumBal.text)*strtoint(EKolvo.text);
  sumiz:=sumiz+strtofloat(ESumIzn.text)*strtoint(EKolvo.text);
  kol:=kol+StrToInt(EKolvo.Text);
  LSum.Caption:=floattostr(sumb);
  LSumIzn.Caption:=floattostr(sumiz);
  LKolvo.Caption:=IntToStr(kol);
  frmrefresh;
  NdokEdit.SetFocus;
end;
Прблема вот в чём, после выполнения этой проседуре (не во время, а после! При трассировке сразу после end"а) выдаётся "Invalid pointer operation", комментирую кусок

for i:=1 to strtoint(EKolvo.Text) do
  begin
     dob.zavnum[i]:=MDPrz.fieldbyname("znum").asString;
     dob.invnum[i]:=MDPrz.fieldbyname("inum").asString;
     dob.sumind[i]:=strtofloat(ESumBal.text);
     dob.sumbalind[i]:=strtofloat(ESumIzn.Text);
     mdprz.Delete;
     MDPrz.Next;
  end;
всё идёт нормльно. ТУт как я понял проблема с массивами, как вот блин её решить, надёюсь кто-нить подскажет.
Заранее благодарен.


 
Palladin ©   (2004-07-18 14:56) [1]

1 А стоит ли этому классу быть классом?
2 Какая безобразная дисциплина кодирования.
3 Что такое mdprz?
4 Динамические массивы имеют нижний индекс НОЛЬ и верхний РАЗМЕР МАССИВА МИНУС АДЫН!



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.056 c
14-1089960179
Nikon777777
2004-07-16 10:42
2004.08.01
Реально ли написать программку?


4-1087557999
vertal
2004-06-18 15:26
2004.08.01
Использование CreateThread в Delphi


1-1089966405
Lm
2004-07-16 12:26
2004.08.01
сворачивание окон(проблема )


11-1078377224
vinter
2004-03-04 08:13
2004.08.01
Как поместить на форму jpg картинку


14-1089558048
homo sapiens
2004-07-11 19:00
2004.08.01
Как вспомнить пароль?