Delphi 7: маленькая ошибка

Тема в разделе "Delphi - FAQ", создана пользователем -, 4 мар 2010.

  1. Гость

    Здравствуйте.
    Ниже приведен текст программы поиска в массиве целых чисел. Перебор элементов массива осуществляет оператором repeat, в теле которой оператор if сравнивает текущий элемент массива с заданным и присваивает переменной found значение true, если текущий элемент и заданный равны. Цикл завершается, если в массиве обнаружен искомый элемент, (found=true), или если проверены все элементы массива. По завершении цикла, проверив значение переменной found, можно определить, успешен поиск или нет.
    Проблема возникла в том, что кажется я неправильно заполняю массив значениями которые ввожу в StringGrid. Возникает окно с ошибкой:
    with message '''is not a valid integer value'. Хотелось бы от этой ошибки избавиться.


    Код (Text):
    unit Unit11Filin;
    interface

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

    type
    TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    I,J: integer;
    implementation

    {$R *.dfm}
    {Function GetSubStr(st:string; n: integer) :string;
    var
    p, i:integer;
    begin
    for i:=1 to n-1 do
    begin
    p:=pos(' ',st);
    st:=copy(st,p+1,Length(st)-p);
    //если в начале оставшейся части строки
    //есть пробелы, то они удаляются
    while (pos(' ',st)=1) and (length(st)>0) do
    delete(st,1,1);
    end;
    p:=pos(' ',st);
    if p <> 0
    then result:=copy(st,1,p-1) else result:=st;
    end;}
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
    StringGrid1.ColCount:=StrToInt(Edit1.Text);
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    const
    SIZE=20;
    var
    a: array[1..SIZE] of integer;
    n: integer;
    found: boolean;
    i,m: integer;
    begin
    {ввод числа элементов массива n<20}
    n:=StrToInt(Edit1.text);
    {ввод массива }
    for i:=1 to n do
    a[i]:=StrToInt(StringGrid1.Cells[J,1]);
    {ввод искомого элемента массива}
    m:=StrToInt(Edit2.text);
    {процедура поиска в массиве}
    found:=false;
    i:=1;
    repeat
    if a[i]=m then found:=true
    else i:=i+1;
    until (i>n)or(found = true);
    if found=true
    then ShowMessage('Совпадение с элементом номер '
    +IntToStr(i)+#13+'Поиск успешно завершен')
    else ShowMessage('Заданный элемент не найден!');
    end;
    end.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7

    тут точно J ?
     
  3. Titan

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    Как заметил OKEN, ошибка именно в строке :
    a:=StrToInt(StringGrid1.Cells[J,1]);

    должно быть
    a:=StrToInt(StringGrid1.Cells[i,1]);
     
  4. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Titan
    Заметила :ya_lamo:
     
  5. Titan

    Titan Well-Known Member

    Регистрация:
    10 июн 2004
    Сообщения:
    105
    Симпатии:
    0
    Девушки тоже программируют ? :ya_lamo:
    Пардон :D
     
Загрузка...
Похожие Темы - Delphi маленькая ошибка
  1. cybert
    Ответов:
    0
    Просмотров:
    102
  2. Shouldercannon
    Ответов:
    0
    Просмотров:
    168
  3. antares
    Ответов:
    0
    Просмотров:
    453
  4. Луиза
    Ответов:
    0
    Просмотров:
    298
  5. avizer
    Ответов:
    5
    Просмотров:
    739

Поделиться этой страницей