Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.03.2010, 14:13
Аватар для Первокурсница
Первокурсница Первокурсница вне форума
Прохожий
 
Регистрация: 27.02.2010
Сообщения: 46
Репутация: 10
Смущение Delphi 7: маленькая ошибка, StringGrid и массив

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


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025