![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Помогите решить проблему, задача такая, нужно вводить количество строк, и столбцов с клавиатуры, и заполнить таблицу стринггрид тоже с клавиатуры и найти максимальный элемент...но проблема в том, что программа выдаёт ошибку raised exception class eaccessviolation и выделяет edt1.Text:=IntToStr(A[imax,jmax]); Помогите решить проблему.
Код:
unit Unit_masiv; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; edt1: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; A: array of array of integer; m, n: integer; imax, jmax: integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var i, j: integer; begin imax:=0; jmax:=0; For i:=0 to High(A) do For j:=0 to High(A) do if A[i,j] > A[imax,jmax] then begin imax:=i; jmax:=j; end; edt1.Text:=IntToStr(A[imax,jmax]); end; procedure TForm1.Button2Click(Sender: TObject); Var i, j: integer; begin if (Edit1.Text<>'') and (Edit2.Text<>'') then begin n:=StrToInt(Edit1.Text); m:=StrToInt(Edit2.Text); for j:=0 to m do for i:=0 to n do if Length(StringGrid1.Cells[i, j]) <>0 then A[i,j]:=StrToInt(StringGrid1.Cells[i,j]); StringGrid1.RowCount:=n; StringGrid1.ColCount:=m; end else Showmessage('Ievadit masiva dimensiju.'); end; end. |
#2
|
||||
|
||||
![]() А чего же ты хочешь? При пустом поле так и будет. Закрывай в:
Код:
try except end Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 15.12.2011 в 02:30. |
#3
|
|||
|
|||
![]() я плохо разбираюсь в этом...то есть мне нужно сделать так..
Код:
try edt1.Text:=IntToStr(A[imax,jmax]); except End; Последний раз редактировалось lmikle, 15.12.2011 в 02:38. |
#4
|
||||
|
||||
![]() Код:
A: array of array of integer; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 15.12.2011 в 02:28. |
#5
|
|||
|
|||
![]() Вот писал получение матрицы из StringGrid:
Код:
function TMainForm5.GetMatrix : Boolean; var I, J : Integer; begin Result := True; SetLength(A,sgMatrix.ColCount); For I := Low(A) To High(A) Do Begin SetLength(A[i],sgMatrix.RowCount); For J := Low(A[i]) To High(A[i]) Do If Not TryStrToInt(sgMatrix.Cells[I,J],A[I,J]) Then Begin ShowMessage(Format('Error: Can''t convert value in cell %d,%d to integer.',[I+1,J+1])); sgMatrix.SetFocus; Result := False; Exit; End; End; end; Переделаешь под себя, заместо сообщения и вылета можно, например, 0 подставлять. |
#6
|
|||
|
|||
![]() Спасибо помогло!.
|