Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.041 c
6-1086176513
osama
2004-06-02 15:41
2004.08.01
Памажите сделать сервер средствами АПИ


14-1089718920
Nick-From
2004-07-13 15:42
2004.08.01
Какие проги есть, чтобы делать печати


14-1089704267
Max Ivanych
2004-07-13 11:37
2004.08.01
Всю ночь снился Access...


1-1090386061
pavel_pavel
2004-07-21 09:01
2004.08.01
Общение с другой прогой


8-1084513790
alienserg
2004-05-14 09:49
2004.08.01
сжатие аудиопотока налету.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский