IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Нужна прога, Программирование исключительных ситуаций
сообщение
Сообщение #1


Гость






Всем привет!!! Помогите реализовать модуль в программе
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;

End.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


то есть?
напихать сюда обработчиков исключительных ситуаций вместо того, что сделано?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






В конечном итоге мне нужно вот это все дело подцепить как модуль и продемонстрировать обработку искл. ситуаций. Не знаю как передать туда массив, полученный путем ввода с клавиатуры.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 20:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name