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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 29.12.2011, 22:21   #1
tec46
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 19
По умолчанию delphi. матрица в StringGrid. чего не работет прога

Добрый вечер всем. подскажите пожалуйста почему delphi 7 выдает ошибку на a:=StrToInt(StringGrid1.cells[i;0]);



Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure StringGrid1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Const n=15;
var
  Form1: TForm1;
    min_idx, max_idx: integer; 
  i: integer;
  a: array of integer;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
begin

  randomize;
  for i:=1 to 15 do
    begin
      a[i]:=random(5000);
      write(a[i],' ');
    end;
for i:=0 to n-1 do
a:=StrToInt(StringGrid1[i;0]);
for i:=0 to n-1 do
if a>a[i+1] then begin
 min_idx:=i+1; max_idx:=i;
 end
 else begin
 min_idx:=i; max_idx:=i+1;
 end;
  
  for i:= 0 to n-1 do begin
if a>max then max_idx:=i; if a<min then  min_idx:=i;
end;
  if (a[min_idx] = 0) or (a[max_idx] = 0) then begin
  
    for i:= 1 to (min_idx)-1  do a:= 0; 
  end;
for i:= 0 to n-1 do
StringGrid1[i,0]:=IntToStr(a);
end.


вот что должна делать прога:
дан массив из 15 целых чисел. Если минимальный или максимальный элемент равен 0, то обнулить элементы массива, предшествующие минимальному элементу в массиве.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.12.2011 в 10:36.
tec46 вне форума
Старый 29.12.2011, 22:47   #2
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Не тестировал, но на 96% уверен, что косяк из-за того, что вы обращаетесь к переменной a не как к элементу массива, а это глобально объявленный динамический массив. Насколько я помню, к массиву в целом можно обращаться лишь тогда, когда нужно тупо скопировать один массив в другой. А чтобы лучше в коде разбираться, нужно форматировать его: ставить символы табуляции (или пробелы) внутри блока (begin ... end), для условного оператора, оператора цикла и т. д.
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума
Старый 29.12.2011, 22:57   #3
tec46
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 19
По умолчанию

я пока в программирование не особа варю, вы не могли бы помочь это исправить?
tec46 вне форума
Старый 29.12.2011, 23:01   #4
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Цитата:
Сообщение от tec46 Посмотреть сообщение
я пока в программирование не особа варю, вы не могли бы помочь это исправить?
Сейчас поправлю, если, конечно, разберусь!..
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума
Старый 29.12.2011, 23:09   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
a:=StrToInt(StringGrid1.cells[i,0]);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума
Старый 29.12.2011, 23:19   #6
tec46
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
a:=StrToInt(StringGrid1.cells[i,0]);
все рано выдает ошибку
tec46 вне форума
Старый 29.12.2011, 23:32   #7
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Глянув на Ваш код, решил, что править нет смысла - лучше свой написать. Прогу написал, у меня пашет. И ещё, не нужно обвинять Delphi в том, что среда что-то не понимает - я раньше тоже так делал, но ошибка, как всегда в прокладке - ничего не поделать - человеческий фактор!
Вложения
Тип файла: zip Прога.zip (6.0 Кб, 9 просмотров)
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума
Старый 29.12.2011, 23:34   #8
tec46
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 19
По умолчанию

Огромное спасибо)))))
tec46 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Графы. Матрица смежности. StringGrid. Mr_freeman Помощь студентам 10 05.10.2011 19:19
Delphi. Матрица (StringGrid) StudentMarat Помощь студентам 1 17.02.2011 03:21
Матрица в StringGrid aurora_87 Общие вопросы C/C++ 1 22.12.2010 14:55
прога на С++ матрица benik Помощь студентам 2 15.12.2010 20:19
матрица в Delphi (StringGrid) kukushonka Помощь студентам 7 01.06.2010 20:08