Главная страница
    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.031 c
1-1089791332
serg128
2004-07-14 11:48
2004.08.01
Как можно отследить создание файла в определенной директории?


14-1089997718
}|{yk
2004-07-16 21:08
2004.08.01
Все! Ухожу...


14-1090096367
KilkennyCat
2004-07-18 00:32
2004.08.01
Встреча мастаков в 31-го в Выборге.


14-1089574147
Empleado
2004-07-11 23:29
2004.08.01
кАковый перевод иноземных фильмов


8-1084500194
Юрец2
2004-05-14 06:03
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский