Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2013, 23:18   #1
vovjkee
Пользователь
 
Регистрация: 07.06.2013
Сообщений: 17
По умолчанию Массив, ошибка

Можете объяснить или помочь решить проблему, ошибка в 101 строке "[Error] Unit1.pas(101): Incompatible types: 'Integer' and 'Extended'"
Прилагается весь код и картинка.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DB, ADODB;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    StringGrid2: TStringGrid;
    Label4: TLabel;
    Button6: TButton;
    Button7: TButton;
    ADOTable1: TADOTable;
    ADOConnection1: TADOConnection;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  SG1 : Array[1..4,1..5] Of Real;
  SG2 : Array[1..4] Of Real;
  i, j, k, buf, p, index, res : Integer;
  max : Real;
  f:Text;
implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
  k := 1;
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    Begin
      If ((k Mod 2) <> 0) Then
        StringGrid1.Cells[j-1,i-1] := FloatToStr(k - 1)
      Else
        StringGrid1.Cells[j-1,i-1] := FloatToStr(k + 1);
      k := k + 1;
    End;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Randomize;
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    StringGrid1.Cells[j-1,i-1] := FloatToStr(50 - Random(101));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  For i:=1 To 4 Do {ñòîëáöû}
  For j:=1 To 5 Do { ñòðîêè }
    If  (StringGrid1.Cells[j-1,i-1]='') Then  {  StringGrid1.Cells[ñòðîêà,ñòîëáåö]}
      SG1[i,j] := 0  { SG1[ñòîëáåö,ñòðîêà] }
    Else
      SG1[i,j] := StrToFloat(StringGrid1.Cells[j-1,i-1]);


  For i:=1 To 4 Do {ñòîëáöû}
  begin
   SG2[i] := 1;
   For j:=1 To 5 Do { ñòðîêè }
   begin
     p := -1; { ïàðíîñòü íåîïðåäåëåíà}
     index := j; {ôèêñèðóåì index}
     For k:=1 To 5 Do
      begin
       if k <> index then
       begin
         if SG1[i, k] = SG1[i, index] then
           p := 1; {ýëåìåíò ïàðíûé}
           p := 0; {ýëåìåíò íåïàðíûé}
       end;
     end;
     if p = 1 then res := 3.2 + SG1[i, j]; { íåïàðíûé 3.2+i }
     else
       begin
        if p = 0  then   res := 6.4 - SG1[i, j] { ïàðíûé 6.4+i }
        { else îøèáêà}
       end;
     { çíà÷åíèÿ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà StringGrid2.Cells
        ñîñòîÿò èç ïðîèçâåäåíèÿ ïîëîæèòåëüíûõ çíà÷åíèé ýëåìåíòîâ
        ñòîëáöîâ äâóõìåðíîãî ìàññèâà }
     if res > 0 then
     begin
       SG2[i] := SG2[i] * res;
     end;
   End;
  End;

  For i:=1 To 4 Do
    StringGrid2.Cells[0,i-1] := FloatToStr(SG2[i])

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    StringGrid1.Cells[j-1,i-1] := ' ';

  For i:=1 To 4 Do
    Begin
      StringGrid2.Cells[0,i-1] := ' ';
      SG2[i] := 0;
    End;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Close
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  AssignFile(f,GetCurrentDir+'\F.txt');
  Reset(f);
  For i:=1 To 4 Do
  For j:=1 To 5 Do
    Begin
      Read(f,buf);
      StringGrid1.Cells[j-1,i-1] := IntToStr(buf);
    End;
   CloseFile(f);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  With ADOTable1 Do
    Begin
      Active:=True;
      First;
      For i:=1 To 4 Do
      For j:=1 To 5 Do
        begin
          StringGrid1.Cells[j-1,i-1] := IntToStr(Integer(FieldValues['chislo']));
          Next;
        End;
    end;
  AdoConnection1.Close;
end;

end.
Изображения
Тип файла: jpg 111.jpg (41.6 Кб, 43 просмотров)
vovjkee вне форума Ответить с цитированием
Старый 09.06.2013, 00:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

перевести ошибку не пробовали?!

Цитата:
Код:
var
  i, j, k, buf, p, index, res : Integer;
....
     if p = 1 then res := 3.2 + SG1[i, j]; { iaia?iue 3.2+i }
     else
       begin
        if p = 0  then   res := 6.4 - SG1[i, j] { ia?iue 6.4+i }
объясните, каким образом Вы ЦЕЛОЧИСЛЕННОЙ переменной пытаетесь присвоить ВЕЩЕСТВЕННОЕ (дробное) число?!

HINT
Скорее всего, Вам нужно переменную res сделать вещественного типа (например, real )
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СИ, одномерный массив, где ошибка? Immoralist Помощь студентам 2 26.04.2012 11:30
Массив, ошибка angpuxa Общие вопросы C/C++ 0 03.04.2012 09:18
одномерный массив ошибка Op1nG.Spark Помощь студентам 1 04.12.2011 13:15
StringGrid и массив, непонятная ошибка Студент политеха Помощь студентам 4 06.06.2011 08:50
Таблица, массив, цикл и ошибка Marsel737 Общие вопросы Delphi 4 18.03.2010 20:52