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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 21:27   #1
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию Delphi: ошибка - типы данных

Помогите пожалуйста исправить ошибку. Выдаёт при расчётах ошибку типов данных и не выводит результат...
Помогите пожалуйста!
Вот код:

Код:
procedure TForm1.Button3Click(Sender: TObject);
var
u :integer;
i:integer;
k:array of integer;
h:array of integer;

begin

u:=0;
k[i]:=StrToInt(StringGrid1.Cells[i,0]);
h[i]:=StrToInt(StringGrid2.Cells[i,0]);
for i:=1 to n do
begin
u:=u+(k[i]*h[i]);
end;
Edit3.Text:=FloatToStr(u);
end;
end.
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 21:30   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
Edit3.Text:=FloatToStr(u);
У тебя переменные типа Integer; значит
Код:
Edit3.Text:=IntToStr(u);
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 21:32   #3
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Roof, у меня сначала так и было, но это не помогло... =__=
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 21:45   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

у тебя вообще код странный.
Код:
k:array of integer;
h:array of integer;
Где размерность массива? У тебя он объявлен как динамический. А если так, то надо выделять память под него. самое простое - SetLenght можно использовать.

Код:
k[i]:=StrToInt(StringGrid1.Cells[i,0]);
h[i]:=StrToInt(StringGrid2.Cells[i,0]);
А i чему равно??

судя по всему ты цикл забыла написать тут.
Код:
for i := 0 to n  - 1 do  // или от 1 до n  - в зависимости от индексации в массиве
  begin
    k[i]:=StrToInt(StringGrid1.Cells[i,0]);
    h[i]:=StrToInt(StringGrid2.Cells[i,0]);
  end;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 19.11.2010 в 21:55.
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 21:55   #5
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Roof, я добавила цикл, но он теперь пишет, что десятичное число не является переменной типа integer =__=
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 21:57   #6
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

я не могу угадать просто где у тебя ошибка, довольно слабо развиты телепатические способности . Выкладывай исходник чтобы я не гадал.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 22:02   #7
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Вот исходник, как и просили...
Собственно коды первых двух кнопочек работают нормально, а вот к третьей, где расчёты начинаются - ошибка.
Вложения
Тип файла: rar СИИ-4 УДАЧА.rar (191.7 Кб, 6 просмотров)
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 22:22   #8
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

исходник того листинга, где не работает - прямо сюда с указанием проблемы. У меня нету делфи под рукой сейчас.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 19.11.2010, 22:28   #9
Sianessa
Форумчанин
 
Регистрация: 18.01.2009
Сообщений: 144
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    StringGrid2: TStringGrid;
    Edit1: TEdit;
    Label3: TLabel;
    Button1: TButton;
    StringGrid3: TStringGrid;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Button2: TButton;
    Button3: TButton;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  n:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.RowCount:=StrToInt(Edit1.Text); {Задаем количество элементов массива}
StringGrid2.RowCount:=StrToInt(Edit1.Text);
StringGrid3.RowCount:=StrToInt(Edit1.Text);
n:=StrToInt(Edit1.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j,n: integer;
begin
 randomize;

    for i:=0 to StringGrid1.ColCount - 1 do
          for j:=0 to StringGrid1.RowCount - 1 do
             begin
             for n:=0 to 1  do
             begin
                StringGrid1.Cells[i,j]:=FloatToStr(Random(100)/100);
                StringGrid2.Cells[i,j]:=FloatToStr(Random(100)/100);

             end;
             end;
end;


procedure TForm1.Button3Click(Sender: TObject);
var
u :integer;
i:integer;
k:array of integer;
h:array of integer;

begin

u:=0;

for i := 1 to n do 
  begin
    k[i]:=StrToInt(StringGrid1.Cells[i,0]);
    h[i]:=StrToInt(StringGrid2.Cells[i,0]);
  end;

for i:=0 to n do
begin
u:=u+(k[i]*h[i]);

end;
 Edit3.Text:=IntToStr(u);
end;
end.
Не работает событие под procedure TForm1.Button3Click(Sender: TObject);
Sianessa вне форума Ответить с цитированием
Старый 19.11.2010, 23:13   #10
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

объяснял же - массивы объявлены как динамические
либо объявить как статические с указанием размерности, либо использовать SetLenght.
Размерность массива знаешь? Полагаю размерность будет равна количеству столюоцов в StringGrid1 или в StringGrid2. И, по всей видимости, это количество равное.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных С++ werser Помощь студентам 1 13.03.2010 18:34
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03