Показать сообщение отдельно
  #1  
Старый 28.04.2014, 17:09
Guerron Guerron вне форума
Прохожий
 
Регистрация: 28.04.2014
Адрес: Москва
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
Сообщение Помогите исправить ошибки

Пытался создать программу, которая создаёт два одномерных массива, в каждом из которых находит минимальное значение и эти значения сравнивает, выводя в отдельный Эдит результат (t). Точную формулировку задания, к сожалению, не помню. Как я понял, у меня как-то неправильно создаются массивы, но что нужно сделать не пойму.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  A=array[0..100] of integer;
  B=array[0..100] of integer;
var
  Form1: TForm1;
  N1,N2:String;
  N11,N22,a1,b1,minA,minB:integer;

implementation

{$R *.dfm}

//label restart;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Button2.Enabled:=False;
  Button3.Enabled:=False;
  Button4.Enabled:=False;
end;

procedure TForm1.Button1Click(Sender: TObject); //кнопка создания массивов
begin
  N1:=Edit1.Text;
  N2:=Edit2.Text;
  N11:=StrToInt(N1);
  N22:=StrToInt(N2);
  if N11<0 then
    N11:=1
  Else if N11>99 then
    N11:=99
  else
    ShowMessage('Длина массива X: Введите число');
  if N22<0 then
    N22:=1
  Else if N22>99 then
    N22:=99
  else
    ShowMessage('Длина массива Y: Введите число');
  randomize;
  for a1:=0 to N11-1 do
    A(a1):=(-99+random(198));;
  for b1:=0 to N22-1 do
    B(b1):=-99+random(198);
  Button2.Enabled:=True;
end;

procedure TForm1.Button2Click(Sender: TObject); //кнопка нахождения минимумов
begin
  minA:=A(a1);
  minB:=B(b1);
  for a1:=1 to N11-1 do
    if A(a1)<minA then
      minA:=A(a1);
  for b1:=1 to N22-1 do
    if B(b1)<minB then
      minB:=B(b1);
  Button3.Enabled:=True;
end;

procedure TForm1.Button3Click(Sender: TObject); //кнопка сравнения минимумов матриц и вывода t
begin

end;

procedure TForm1.Button4Click(Sender: TObject); //кнопка для сброса полей (возврат к начальным условиям)
var m:Integer;
begin
  Edit1.Text:='Длина массива X';
  Edit2.Text:='Длина массива Y';
  for m:=1 to 15 do
    Memo1.Lines.Delete(m);
  Memo1.Lines.Add:='Здесь будет результат программы (значение t) и';
  Memo1.Lines.Add:='минимальные значения матриц X и Y.';

end;
//goto restart;

end.
Ошибки и предупреждения:
Код:
[Warning] Unit1.pas(72): For loop control variable must be simple local variable
[Error] Unit1.pas(73): Invalid typecast
[Warning] Unit1.pas(74): For loop control variable must be simple local variable
[Error] Unit1.pas(75): Invalid typecast
[Error] Unit1.pas(81): Invalid typecast
[Error] Unit1.pas(82): Invalid typecast
[Warning] Unit1.pas(83): For loop control variable must be simple local variable
[Error] Unit1.pas(84): Invalid typecast
[Error] Unit1.pas(85): Invalid typecast
[Warning] Unit1.pas(86): For loop control variable must be simple local variable
[Error] Unit1.pas(87): Invalid typecast
[Error] Unit1.pas(88): Invalid typecast
[Error] Unit1.pas(99): Not enough actual parameters
[Error] Unit1.pas(99): Incompatible types: 'Integer' and 'String'
[Error] Unit1.pas(100): Not enough actual parameters
[Error] Unit1.pas(100): Incompatible types: 'Integer' and 'String'
Ответить с цитированием