Главная страница
    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.45 MB
Время: 0.033 c
1-1089849388
Глеб
2004-07-15 03:56
2004.08.01
Прорисовка и скроллинг изображения


3-1089195030
sniknik
2004-07-07 14:10
2004.08.01
Не запускается сервис базы (оракле)


1-1090316223
Gear
2004-07-20 13:37
2004.08.01
Бесконечный цикл в отдельный поток.


14-1089374389
Ketmar
2004-07-09 15:59
2004.08.01
задача, об которую сломали челюсти четыре человека %-)


14-1089790623
ruslan
2004-07-14 11:37
2004.08.01
u menya est funksiya kak ispolzovat vipolnyat eqo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский