Главная страница
    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.04 c
1-1090220036
alextov
2004-07-19 10:53
2004.08.01
Нужно чтоб при клике на иконке отчета запускалась прога и открыва


14-1089885307
Artem123
2004-07-15 13:55
2004.08.01
как вставить запись в таблицу из DBGrid и ....


9-1082613080
КиТаЯц
2004-04-22 09:51
2004.08.01
GLScene как правильно удалить объект?


14-1089822317
QuasiLamo
2004-07-14 20:25
2004.08.01
With obj1 do ...


4-1087805509
besen-ok
2004-06-21 12:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский