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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2011, 19:18   #1
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
Печаль Прокомментируйте код

Кто очень давно работает со средой Delphi, если Вас не затруднит, объясните мне как можно подробнее вот этот код (код не полный т.к. что означают некоторые функции я знаю):

Код:
MaxRand:integer=2;
  Colors:array of array of TColor;

implementation

var count:integer;

Setlength(colors,N+1,M+1);
 for count:=1 to M do
  grid.Cells[0,count]:=inttostr(count);
   for count:=1 to N do
  grid.Cells[count,0]:=inttostr(count);
for count:=0 to M do
Colors[0,count]:=clbtnface;
for count:=0 to N do
Colors[count,0]:=clbtnface;

procedure TForm1.gridKeyPress(Sender: TObject; var Key: Char);

  case key of
  '0'..'9',#8,#13,',': begin end;
  else key:=chr(0);
  end;

Grid.OnDrawCell:=nil;

grid.Cells[i,j]:=inttostr(random(2*MaxRand))

Grid.OnDrawCell:=nil;

Grid.OnDrawCell:=GridDrawCell;

Matrix:array of array of integer;

setlength(Matrix,N,M);
setlength(Colors,N+1,M+1);

for i:=1 to Grid.ColCount-1 do
for j:=1 to Grid.RowCount-1 do
Colors[i,j]:=clwindow;

if (Grid.cells[i,j]='') then Matrix[i-1,j-1]:=0 else
Matrix[i-1,j-1]:=strtoint(Grid.cells[i,j]);

Grid.Invalidate;

Grid.Canvas.Brush.Color :=Colors[ACol,Arow];
Grid.Canvas.FillRect (Rect);
Grid.Canvas.TextRect (Rect, Rect.Left + 2, Rect.Top + 2, Grid.Cells[ACol,ARow]);

Последний раз редактировалось Stilet; 15.01.2011 в 21:04.
ZyaT-OK вне форума Ответить с цитированием
Старый 15.01.2011, 19:57   #2
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Что объяснить то? прям каждую строку?
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 15.01.2011, 19:59   #3
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от XeruH Посмотреть сообщение
Что объяснить то? прям каждую строку?
Да, если не трудно.
ZyaT-OK вне форума Ответить с цитированием
Старый 16.01.2011, 13:09   #4
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
По умолчанию

//поднять\\
ZyaT-OK вне форума Ответить с цитированием
Старый 16.01.2011, 13:18   #5
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Код давай целиком...
baster128 вне форума Ответить с цитированием
Старый 16.01.2011, 13:22   #6
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
По умолчанию

Полный код:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
grid: TStringGrid;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
procedure FormCreate(Sender: TObject);
procedure gridKeyPress(Sender: TObject; var Key: Char);
procedure GridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
N:byte=5;
M:byte=5;
MaxRand:integer=2;
Colors:array of array of TColor;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var count:integer;
begin
label1.Caption:='';

Grid.ColCount:=N+1;
Grid.RowCount:=M+1;

Setlength(colors,N+1,M+1);
for count:=1 to M do
grid.Cells[0,count]:=inttostr(count);
for count:=1 to N do
grid.Cells[count,0]:=inttostr(count);
for count:=0 to M do
Colors[0,count]:=clbtnface;
for count:=0 to N do
Colors[count,0]:=clbtnface;


end;

procedure TForm1.gridKeyPress(Sender: TObject; var Key: Char);
begin
case key of
'0'..'9',#8,#13,',': begin end;
else key:=chr(0);
end;//case
end;

procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin

Grid.Canvas.Brush.Color :=Colors[ACol,Arow];

Grid.Canvas.FillRect (Rect);
Grid.Canvas.TextRect (Rect, Rect.Left + 2, Rect.Top + 2, Grid.Cells[ACol,ARow]);

end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j:byte;
begin
Grid.OnDrawCell:=nil;
for i:=1 to N do
for j:=1 to M do
begin
grid.Cells[i,j]:=inttostr(random(2*MaxRand));//-MaxRand);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j:byte; Matrix:array of array of integer;
k:integer;
begin
Grid.OnDrawCell:=GridDrawCell;

k:=0;
setlength(Matrix,N,M);
setlength(Colors,N+1,M+1);

for i:=1 to Grid.ColCount-1 do
for j:=1 to Grid.RowCount-1 do
Colors[i,j]:=clwindow;

for i:=1 to N do
for j:=1 to M do
if (Grid.cells[i,j]='') then Matrix[i-1,j-1]:=0 else
Matrix[i-1,j-1]:=strtoint(Grid.cells[i,j]);

for i:=1 to N-2 do
for j:=0 to M-1 do
if (Matrix[i-1,j]<Matrix[i,j]) and (Matrix[i+1,j]>Matrix[i,j]) then
begin
inc(k);
Colors[i+1,j+1]:=clRed;
end;

label1.Caption:='k='+inttostr(k);
Grid.Invalidate;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i,j:byte;
begin
Grid.OnDrawCell:=nil;
for i:=1 to N do
for j:=1 to M do
begin
grid.Cells[i,j]:='';
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
unit2.Form2.Show;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
close;
end;


end.
ZyaT-OK вне форума Ответить с цитированием
Старый 16.01.2011, 13:44   #7
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Не, ну я понимаю если бы вы просили составить алгоритм к какой-то задаче, код программы или попросили бы написать алгоритм данной программы, но просить прокоментировать операторы готовой программы...
Вы что не в состоянии открыть любой самоучитель, справочник или наконец google и найти там что означают написанные в проге операторы и функции? и подписать их в коде? или вам просто лень это делать?
Терпеть не могу таких тем, как и тем
-"крутым программёрам эта задача влёт"
- "обещал помочь девушке"
- "интересная задача"
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 16.01.2011, 13:44   #8
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
Радость

Код:


MaxRand:integer=2; // константа типа интежер
Colors:array of array of TColor;//двойной динамический массив

implementation//раздел ограниченного доступа (только из этого модуля)

var count:integer;// объявление переменной

Setlength(colors,N+1,M+1);// зарезервирована память для двухмерного массива
for count:=1 to M do //цикл с парраметром
grid.Cells[0,count]:=inttostr(count);//ввод в ячейку компонента (по видимому типа TGrid) строкового значения
for count:=1 to N do//цикл с парраметром
grid.Cells[count,0]:=inttostr(count);//ввод в ячейку компонента (по видимому типа TGrid) строкового значения
for count:=0 to M do //цикл с парраметром
Colors[0,count]:=clbtnface;//ввод в ячейку матрицы типа TColor (объявленной выше)какого-то значения
for count:=0 to N do//цикл с парраметром
Colors[count,0]:=clbtnface;//ввод в ячейку матрицы типа TColor (объявленной выше)какого-то значения

procedure TForm1.gridKeyPress(Sender: TObject; var Key: Char);//функция нажатия на клавишу

case key of// оператор выбора
'0'..'9',#8,#13,',': begin end;//цифровые клавиши и клавиши управления курсором
else key:=chr(0);//устанавливаем 0
end;

Grid.OnDrawCell:=nil;//очищаем ячейку

grid.Cells[i,j]:=inttostr(random(2*MaxRand));//вводим в ячейку какую-то строку

Grid.OnDrawCell:=nil;//очищаем ячейку

Grid.OnDrawCell:=GridDrawCell;//вводим в ячейку какое-то значение

Matrix:array of array of integer;//объявляем двухмерный динамический массив

setlength(Matrix,N,M);//задаем его размер
setlength(Colors,N+1,M+1);//изменяем размер двухмерного массива типа TColor

for i:=1 to Grid.ColCount-1 do//цикл с парраметром
for j:=1 to Grid.RowCount-1 do//цикл с парраметром
Colors[i,j]:=clwindow;//объявляем ячейкам двухмерного массива типа TColor цвет clwindow

if (Grid.cells[i,j]='') then Matrix[i-1,j-1]:=0 else
Matrix[i-1,j-1]:=strtoint(Grid.cells[i,j]);// если ячейка Грид равна пустой строке, то соответствующее значение массива интежер=0, иначе значение массива равно преобразованному в интежер значению ячейки Грид

Grid.Invalidate;

Grid.Canvas.Brush.Color :=Colors[ACol,Arow];
Grid.Canvas.FillRect (Rect);
Grid.Canvas.TextRect (Rect, Rect.Left + 2, Rect.Top + 2, Grid.Cells[ACol,ARow]);

Последний раз редактировалось baster128; 16.01.2011 в 13:59.
baster128 вне форума Ответить с цитированием
Старый 16.01.2011, 14:52   #9
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
Счастье

Цитата:
Сообщение от Niro Посмотреть сообщение
Не, ну я понимаю если бы вы просили составить алгоритм к какой-то задаче, код программы или попросили бы написать алгоритм данной программы, но просить прокоментировать операторы готовой программы...
Вы что не в состоянии открыть любой самоучитель, справочник или наконец google и найти там что означают написанные в проге операторы и функции? и подписать их в коде? или вам просто лень это делать?
Терпеть не могу таких тем, как и тем
-"крутым программёрам эта задача влёт"
- "обещал помочь девушке"
- "интересная задача"
Ты правила форума давно читал?
Цитирую: "Рекомендации:

Иногда заглядывайте в правила, они могут изменяться.
Не публикуйте сообщения "читайте книгу", указывайте в какой книге, а лучше с ссылкой.
Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ."
ZyaT-OK вне форума Ответить с цитированием
Старый 16.01.2011, 14:52   #10
ZyaT-OK
 
Регистрация: 15.01.2011
Сообщений: 9
Счастье

Цитата:
Сообщение от Niro Посмотреть сообщение
Не, ну я понимаю если бы вы просили составить алгоритм к какой-то задаче, код программы или попросили бы написать алгоритм данной программы, но просить прокоментировать операторы готовой программы...
Вы что не в состоянии открыть любой самоучитель, справочник или наконец google и найти там что означают написанные в проге операторы и функции? и подписать их в коде? или вам просто лень это делать?
Терпеть не могу таких тем, как и тем
-"крутым программёрам эта задача влёт"
- "обещал помочь девушке"
- "интересная задача"
Ты правила форума давно читал?
Цитирую: "Рекомендации:

Иногда заглядывайте в правила, они могут изменяться.
Не публикуйте сообщения "читайте книгу", указывайте в какой книге, а лучше с ссылкой.
Не стоит отправлять в поиск, не хотите отвечать пройдите мимо. Хотите помочь, пишите конкретный ответ."
ZyaT-OK вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код написал код, но ответ постоянно один и тот же SkuLLL Помощь студентам 4 14.12.2010 19:25
код С++ bpystep Помощь студентам 4 19.09.2010 20:32
Прокомментируйте и объясните код Serjuk Помощь студентам 1 18.05.2010 17:56
Прокомментируйте пож работу программы? EugeneDanceR Microsoft Office Word 4 12.05.2010 22:41
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37