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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 17:31   #1
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию is not a valid integer value

помогите разобраться почему выдаёт ошибку "is not a valid integer value"??
на строке

StringGrid1.Cells[0,0]:= 'Матрица А';

Код:
procedure TForm1.FormCreate(Sender: TObject);
 var
  i,j: integer;
begin
  StringGrid1.Cells[0,0]:= 'Матрица А';
  
  N := 5;
  Edit1.Text := FloatToStr(N);
   Edit2.Text := FloatToStr(N);
  VertSize:= StrToInt(Edit1.Text);
   HorzSize:= StrToInt(Edit2.Text);
  for i:= 1 to HorzSize do
    begin
      StringGrid1.Cells[0,i]:= 'i = ' + IntToStr(i);
    end;
  for j:= 1 to VertSize do
    begin
      StringGrid1.Cells[j,0]:= 'j = ' + IntToStr(j);
    end;
   for i:= 1 to HorzSize do
    for j:= 1 to VertSize do
      begin
        StringGrid1.Cells[i,j]:= IntToStr(0);
      end;
end;
AFA вне форума
Старый 11.10.2009, 18:12   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сначало тексту присваиваете преобразованное число с точкой а потом пытаетесь из него взять целое число
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 11.10.2009, 20:08   #3
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Что это?:
Код:
  N:=5;
  Edit1.Text:=FloatToStr(N);
   Edit2.Text:=FloatToStr(N);
  VertSize:=StrToInt(Edit1.Text);
   HorzSize:=StrToInt(Edit2.Text);
Оно там не нужно...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума
Старый 11.10.2009, 21:39   #4
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию

2 DomiNick
как не надо?..
я там задаю изначальную размерность матрицы и при её изменении...
AFA вне форума
Старый 11.10.2009, 22:15   #5
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Мда? А я-то думаю зачем это...

Переменные VERTSIZE и HORZSIZE - это есть такие константы в модуле Windows... Их нельзя менять...

В приведённом фрагменте не было объявления этих переменных... Нужно либо поменять имена этих переменных, либо отключить модуль Windows (если он не нужен)...

Я бы немного по другому делал... Матрица квадратная (NxN)?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума
Старый 11.10.2009, 22:17   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может сразу
Код:
  VertSize:=N;
   HorzSize:=N;
?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 11.10.2009, 22:21   #7
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию

Код:
unit Unit1;

interface

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

const
  MaxSizeArr = 10;

type
    TArray = array [1..MaxSizeArr,1..MaxSizeArr] of real;
    TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Array1: TArray;
  N: integer;
  VertSize,HorzSize: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
 var
  i,j: integer;
begin
  StringGrid1.Cells[0,0]:= 'Матрица А';
  
  N := 5;
  Edit1.Text := FloatToStr(N);
   Edit2.Text := FloatToStr(N);
  VertSize:= StrToInt(Edit1.Text);
   HorzSize:= StrToInt(Edit2.Text);
  for i:= 1 to HorzSize do
    begin
      StringGrid1.Cells[0,i]:= 'i = ' + IntToStr(i);
    end;
  for j:= 1 to VertSize do
    begin
      StringGrid1.Cells[j,0]:= 'j = ' + IntToStr(j);
    end;
   for i:= 1 to HorzSize do
    for j:= 1 to VertSize do
      begin
        StringGrid1.Cells[i,j]:= IntToStr(0);
      end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  PrevHorzSize,PrevVertSize: integer;
  i,j:integer;
begin
     if (StrToInt(Edit1.Text) <= MaxSizeArr) and (StrToInt(Edit1.Text) > 0) then
    begin
      if (StrToInt(Edit2.Text) <= MaxSizeArr) and (StrToInt(Edit2.Text) > 0) then
       begin
         PrevHorzSize:= HorzSize;
         PrevVertSize:= VertSize;
         VertSize:= StrToInt(Edit1.Text);
         HorzSize:= StrToInt(Edit2.Text);
         StringGrid1.ColCount:= VertSize + 1;
         StringGrid1.RowCount:= HorzSize + 1;
         if PrevHorzSize < HorzSize then
           begin
            for j:= PrevHorzSize + 1 to HorzSize do
              begin
                StringGrid1.Cells[j,0]:= 'j = ' + IntToStr(j);
                for i:= 1 to VertSize do
                  begin
                    StringGrid1.Cells[j,i]:= IntToStr(0);
                  end;
              end;
           end;
          if PrevVertSize < VertSize then
            begin
              for i:= PrevVertSize to VertSize do
                begin
                  StringGrid1.Cells[0,i]:= 'i = ' + IntToStr(i);
                  for j:= 1 to HorzSize do
                    begin
                      StringGrid1.Cells[j,i]:= IntToStr(0);
                    end;
                end;
            end;
        end
      else
        MessageBox(handle, PChar('Максимум 10 на 10 или вы ввели 0'), PChar('Ошибка'), MB_OK+MB_ICONWARNING);
    end
      else
        MessageBox(handle, PChar('Максимум 10 на 10 или вы ввели 0'), PChar('Ошибка'), MB_OK+MB_ICONWARNING);
end;

procedure TForm1.Button2Click(Sender: TObject);
  var
  I, J: Integer;
  A: array of array of Integer;
  Col,m,P,Q : Integer;
begin
  if (length(Edit1.Text)<1) or (length(Edit2.Text)<1)  then
 begin
  Application.MessageBox( 'Вы не ввели переменные!!!','Ошибка ввода!!!', mb_OK+MB_ICONERROR);
     exit;
  end;
   For m:=1 to  length(Edit1.Text) do
   begin
      if  not (Edit1.text[m] in ['0'..'9',','])Then
          begin  Application.MessageBox ( 'Введите размерность матрицы по вертикали!!!','Ошибка ввода!!!', mb_OK+MB_ICONERROR);
          Edit1.Clear;
          exit;
      end;
   end;
   For m:=1 to  length(Edit2.Text) do
   begin
      if  not (Edit2.text[m] in ['0'..'9',','])Then
          begin  Application.MessageBox ( 'Введите размерность матрицы по горизонтали!!!','Ошибка ввода!!!', mb_OK+MB_ICONERROR);
          Edit2.Clear;
          exit;
      end;
   end;

   SetLength(A, StringGrid1.RowCount, StringGrid1.ColCount);

  for I := 0 to StringGrid1.RowCount - 1 do
    for J := 0 to StringGrid1.ColCount - 1 do
      if StringGrid1.Cells[J, I] = '' then
        A[I, J] := 0
      else
        A[I, J] := StrToInt(StringGrid1.Cells[J, I]);

  Col := 0;

  for I := 0 to StringGrid1.RowCount - 1 do
    for J := 0 to StringGrid1.ColCount - 1 do
    begin
      if J = 0 then P := 0
               else P := A[I, J - 1];
      if J = StringGrid1.ColCount - 1 then Q := 0
                                      else Q := A[I, J + 1];

      if (A[I, J] > P) and (A[I, J] < Q) then Inc(Col);
    end;
  ShowMessage('Количество особых элементов: ' + IntToStr(Col));

end;
 end.
вот полный листинг...
а условие таково, что задана целочисленная матрица размером NxM. Определить k–количество “особых” элементов матрицы, считая элемент “особым”, если в его строке слева от него находятся элементы, меньшие его, а справа – большие.
AFA вне форума
Старый 11.10.2009, 22:23   #8
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию

Пепел Феникса
тогда размерность будет строго фиксирована, а мне надо меняющаяся!!
AFA вне форума
Старый 11.10.2009, 22:28   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
  Edit1.Text := FloatToStr(N);
   Edit2.Text := FloatToStr(N);
уберите это.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 11.10.2009, 22:41   #10
AFA
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 69
По умолчанию

Пепел Феникса
пишет "Edit1 ... is not a valid integer value"
AFA вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка '' is not valid integer value svobodys Помощь студентам 4 12.12.2011 22:49
"Project Project1.exe raised class EConvertError with message'''is not a valid floating point value'." Doz1metr Помощь студентам 9 24.06.2009 19:06
Integer ben95 Помощь студентам 5 03.03.2009 16:05
при пустой ячейке выскакивает "is not a valid floating point value" ПОМОГИТЕ serserser Помощь студентам 17 14.11.2007 07:46
Ошибка '0.0' is not a valid timestamp MegaCrazzy БД в Delphi 4 21.03.2007 17:22