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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2010, 17:08   #1
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию '' is not a valid integer value в StringGrid

Собственно в чем заключается задача: Даны две последовательности по n чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую (считать, что хотя бы одно такое число есть).
То есть даны два массива, например: 1 2 3 4 5 и 1 6 7 8 9, программа находит наименьшее число в первом массиве и проверяет, нет ли этого наименьшего числа во втором массиве. Если есть то программа заново проверяет. Я делал программу на форме со StringGrid размером 2х5. Первая строка StringGrid выполняет функцию первого массива, а вторая строка - второй массив.
Вот текст программы:
Код:
interface

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

type
  TIntArray=array[0..4] of Integer;
  TForm1 = class(TForm)
    StringGrid: TStringGrid;
    RandomButton: TButton;
    OpenButton: TButton;
    OpenDialog: TOpenDialog;
    ClearButton: TButton;
    SaveButton: TButton;
    SaveDialog: TSaveDialog;
    RunButton: TButton;
    MinEdit: TEdit;
    procedure RandomButtonClick(Sender: TObject);
    procedure OpenButtonClick(Sender: TObject);
    procedure ClearButtonClick(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure RunButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ExistsInArray(IntArray: TIntArray; Value: Integer): Boolean;
var
  I: integer;
begin
  for I:=0 to Length(IntArray)-1 do
    if IntArray[I]=Value then
    begin
      Result:=True;
      Exit;
    end;
  Result:=False;
end;

function FindMin(A, B: TIntArray): integer;
var
  Min, I: Integer;
  Found: Boolean;
begin
  Found:=False;
  for I:=0 to Length(A)-1 do
    if not ExistsInArray(B, A[I]) and
       (not Found or (A[I]<Min)) then begin
      Min:=A[i];
      Found:=True;
    end;

  Result:=Min;
end;

procedure TForm1.ClearButtonClick(Sender: TObject);
var
  i, j: integer;
begin
  with StringGrid do
  for i:=0 to ColCount-1 do
    for j:=0 to RowCount-1 do
      Cells[i,j]:='';
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
var
  i: Integer;
begin
  if OpenDialog.Execute then
    with TStringList.Create do
      try LoadFromFile(OpenDialog.FileName);
        StringGrid.RowCount:=Count;
        for i:=0 to Count-1 do
        begin
          StringGrid.Rows[i].CommaText:=Strings[i];
        end
      finally
    end;
end;

procedure TForm1.RandomButtonClick(Sender: TObject);
var
  i, j: Integer;
begin
  Randomize;
  with StringGrid do
    for i:=0 to ColCount-1 do
      for j:=0 to RowCount-1 do
        Cells[i,j]:=IntToStr(Random(50));
end;

procedure TForm1.RunButtonClick(Sender: TObject);
var
  A, B: TIntArray;
  I, Min: Integer;
begin
  StringGrid.RowCount:=2;
  StringGrid.ColCount:=5;
  A[I]:=StrToInt(StringGrid.Cells[I,0]);
  B[I]:=StrToInt(StringGrid.Cells[I,1]);
  Min:=FindMin(A, B);
  MinEdit.Text:=IntToStr(Min);
end;

procedure TForm1.SaveButtonClick(Sender: TObject);
var
  StringList: TStringList;
  i, j: Integer;
  Str: string;
begin
  if not SaveDialog.Execute then exit;
  StringList:=TStringList.Create;
  begin
    for i:=0 to StringGrid.RowCount-1 do
    begin
      Str:=' ';
      for j:=0 to StringGrid.ColCount-1 do
      Str:=Str+StringGrid.Cells[j,i]+#9;
      StringList.Add(Str);
    end;
    StringList.SaveToFile(SaveDialog.FileName);
  end;
end;

end.
При нажатии кнопки Run появляется ошибка


В чём может быть проблема подскажите пожалуйста
Brabus вне форума Ответить с цитированием
Старый 22.01.2010, 17:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пройдись пошагам. На какой строке вылетает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2010, 17:12   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
procedure TForm1.RunButtonClick(Sender: TObject);
var
  A, B: TIntArray;
  I, Min: Integer;
begin
  StringGrid.RowCount:=2;
  StringGrid.ColCount:=5;
  A[i]:=StrToInt(StringGrid.Cells[I,0]);
  B[i]:=StrToInt(StringGrid.Cells[I,1]);
  Min:=FindMin(A, B);
  MinEdit.Text:=IntToStr(Min);
end;
Как Вы думаете, чему здесь равно I?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.01.2010, 17:16   #4
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

Stilet, если бы я еще умел...)))))
Alex Cones, даже и не знаю)))
Brabus вне форума Ответить с цитированием
Старый 22.01.2010, 17:19   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А ничему не равна. Авторизацию не прошла... Вот и попробуйте обратиться по несуществующему адресу таблицы и еще и принять данные.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.01.2010, 17:23   #6
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

Alex Cones, подскажите пожалуйста как это можно исправить
Brabus вне форума Ответить с цитированием
Старый 22.01.2010, 17:25   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
procedure TForm1.RunButtonClick(Sender: TObject);
var
  A, B: TIntArray;
  I, Min: Integer;
begin

  StringGrid.RowCount:=2;
  StringGrid.ColCount:=5;
for i:=0 to 4 do begin
  A[i]:=StrToInt(StringGrid.Cells[I,0]);
  B[i]:=StrToInt(StringGrid.Cells[I,1]);end;
  Min:=FindMin(A, B);
  MinEdit.Text:=IntToStr(Min);
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 22.01.2010 в 17:29.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 22.01.2010, 17:29   #8
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

теперь появилась другая ошибка
Brabus вне форума Ответить с цитированием
Старый 22.01.2010, 17:31   #9
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

посмотрите еще раз мой предыдущий пост он исправлен
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 22.01.2010, 17:32   #10
Brabus
Пользователь
 
Регистрация: 25.09.2009
Сообщений: 81
По умолчанию

ОДИНОЧЕСТВО В СЕТИ, сорри. не увидел что сообщение отредактировано
Brabus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
is not a valid integer value AFA Помощь студентам 41 15.03.2012 20:29
Ошибка '' is not valid integer value svobodys Помощь студентам 4 12.12.2011 22:49
s not a valid floating point value prod87 Помощь студентам 1 02.12.2009 20:57
при пустой ячейке выскакивает "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