Всем привет!!! Помогите реализовать модуль в программе
Unit MasByte;
Interface
Uses SysUtils,Dialogs, Grids; Type TMas=array[1..10] of byte; TMasByte = class(TObject) {класс "Динамический массив"} private ptr_an: ^TMas; {указатель на массив} len:byte; {максимальная длина массива} Procedure SetEl(Ind:byte;m:byte); {процедура записи элемента} Function GetEl(Ind:byte):byte; {функция чтения элемента} public n:Byte; {реальный размер массива} Constructor Create(an:byte); Destructor Destroy; override; Property Mas[lnd: byte]:byte read GetEl write SetEl; default; Procedure Modify (Ind:byte; Value:byte); {модификация элемента} Procedure Insert(Ind:byte; Value:byte); {вставка элемента} Function Delete(Ind:byte):byte; {удаление элемента} Function InputMas(Grid: TStringGrid;I,J:integer):boolean; {ввод} Procedure OutputMas(Grid:TStringGrid;I,J:integer); {вывод} end;
Implementation
Constructor TMasByte.Create; Begin inherited Create; GetMem(ptr_an,an); len:=an; { n:=0; указывать не надо} End; Destructor TMasByte.Destroy; Begin FreeMem(ptr_an); inherited Destroy; End; Procedure TMasByte.SetEl(Ind: byte;m:byte); Begin if Ind<=len then if Ind<=n then ptr_an^[Ind]:=m else MessageDlg('B массиве нет'+inttostr(Ind)+'-го элемента. ',mtError,[mbOk],0) else MessageDlg('B массиве можно разместить только'+inttostr(Len)+' элементов.', mtError, [mbOk], 0); End; Function TMasByte.GetEl (Ind: byte): byte; Begin If Ind<=n then Result:=ptr_an^[Ind] else MessageDlg(' В массиве нет '+inttostr(Ind)+'-го элемента.',mtError, [mbOk],0); End; Function TMasByte.InputMas(Grid:TStringGrid;I,J:integer):boolean; Var k:byte; x,er_code: integer; Begin with Grid do begin k:=0; Result:=true; while (Cells [k+I, J]<> '') and Result do begin Val(Cells[k+I,J],x, er_code); if er_code=0 then if x<=255 then Insert(k+1,x) else begin MessageDlg(' Значение не может превышать 255.', mtError,[mbOk],0); Result:=false; Exit; End else begin MessageDlg('B строке обнаружены недопустимые символы. ',mtError, [mbOk],0); Result:=false; Exit; end; k:=k+1; end; OutputMas (Grid,I,J); end; End; Procedure TMasByte. OutputMas (Grid: TStringGrid; I,J: integer); Var k:byte; Begin with Grid do begin if n+I>ColCount then ColCount:=n+I; for k:=0 to ColCount-1 do if k<n then Cells[I+k,J]:=inttostr(mas[k+1]) else Cells[I+k,J]:=''; end; End; Procedure TMasByte.Modify; Begin Mas[Ind]:= Value; End; Procedure TMasByte.Insert; Var i: integer; Begin n:=n+1; for i:=n-1 downto Ind do Mas[i+1]:=Mas[i]; Mas [Ind]:= Value; End; Function TMasByte. Delete; Var i: integer; Begin Result:=Mas [Ind]; for i:=Ind+1 to n do Mas[i-1]:=Mas[i]; n:=n-1; End;
то есть? напихать сюда обработчиков исключительных ситуаций вместо того, что сделано?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
В конечном итоге мне нужно вот это все дело подцепить как модуль и продемонстрировать обработку искл. ситуаций. Не знаю как передать туда массив, полученный путем ввода с клавиатуры.