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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 16:23   #11
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Код:
Procedure TForm1.Button4Click(Sender: TObject);
Var
      Q, X, C, P, H, F, K, Z: Array [1..10, 1..3] Of Real;
      A, B, D, E: Real;
      j: Integer;
Begin
For j:=1 To 10 Do
      Begin
      Q[j, 1]:=StrToFloat(StringGrid1.Cells[j, 1]);
      X[j, 2]:=StrToFloat(StringGrid1.Cells[j, 2]);
      C[j, 3]:=StrToFloat(StringGrid1.Cells[j, 3]);
      P[j, 1]:=StrToFloat(StringGrid2.Cells[j, 1]);
      H[j, 2]:=StrToFloat(StringGrid2.Cells[j, 2]);
      F[j, 3]:=StrToFloat(StringGrid2.Cells[j, 3]);
      StringGrid3.Cells[j, 0]:=StringGrid1.Cells[j, 0];
      End;
For j:=1 To 10 Do
      Begin
      A:=Q[j, 1]*X[j, 2];
      B:=P[j, 1]*H[j, 2];
      End;
For j:=1 To 10 Do
      Begin
      D:=Q[j, 1]-P[j, 1];
      E:=C[j, 3]-F[j, 3];
      End;
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 15.05.2009, 17:05   #12
LIEN
Пользователь
 
Регистрация: 26.04.2008
Сообщений: 44
По умолчанию

Изменила все именно так как вы мне помогли!!!!

Общий код таков:
Код:
procedure TForm1.FormActivate(Sender: TObject);
var
i:integer;
begin
with StringGrid1 do begin
FixedCols:=0;FixedRows:=1;
ColCount:=4;
i:=20;
StringGrid1.RowCount:=StringGrid1.RowCount+i;
StringGrid1.DefaultColWidth:=80;
StringGrid1.RowHeights[0]:=30;

with StringGrid2 do begin
FixedCols:=0;FixedRows:=1;
ColCount:=4;
i:=20;
StringGrid2.RowCount:=StringGrid2.RowCount+i;
StringGrid2.DefaultColWidth:=80;
StringGrid2.RowHeights[0]:=30;

with StringGrid3 do begin
FixedCols:=0;FixedRows:=1;
ColCount:=3;
i:=20;
StringGrid3.RowCount:=StringGrid3.RowCount+i;
StringGrid3.DefaultColWidth:=80;
StringGrid3.RowHeights[0]:=30;

stringgrid1.Cells[0,0]:='Наименование'#13'материала';
stringgrid1.Cells[1,0]:='Количество'#13'материала';
stringgrid1.Cells[2,0]:='Цена'#13'за ед. материала';
stringgrid1.Cells[3,0]:='Общая'#13'стоимость';
stringgrid2.Cells[0,0]:='Наименование'#13'материала';
stringgrid2.Cells[1,0]:='Количество'#13'материала';
stringgrid2.Cells[2,0]:='Цена'#13'за ед. материала';
stringgrid2.Cells[3,0]:='Общая'#13'стоимость';
stringgrid3.Cells[0,0]:='Наименование'#13'материала';
stringgrid3.Cells[1,0]:='Количество'#13'материала';
stringgrid3.Cells[2,0]:='Общая'#13'стоимость';
end;
end;
end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Format: Word;
  C: array[0..255] of Char;
begin
  Format:=DT_LEFT or DT_WORDBREAK;
  (Sender as TStringGrid).Canvas.FillRect(Rect);
  StrPCopy(C,(Sender as TStringGrid).Cells[ACol,ARow]);
  DrawText((Sender as TStringGrid).Canvas.Handle,C,StrLen(C),Rect,Format);
end;


procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Format: Word;
  C: array[0..255] of Char;
begin
  Format:=DT_LEFT or DT_WORDBREAK;
  (Sender as TStringGrid).Canvas.FillRect(Rect);
  StrPCopy(C,(Sender as TStringGrid).Cells[ACol,ARow]);
  DrawText((Sender as TStringGrid).Canvas.Handle,C,StrLen(C),Rect,Format);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Application.Terminate;
end;

Procedure TForm1.Button4Click(Sender: TObject);
Var
      Q, X, C, P, H, F, K, Z: Array [1..10, 1..3] Of Real;
      A, B, D, E: Real;
      j: Integer;
Begin
For j:=1 To 10 Do
      Begin
      Q[j, 1]:=StrToFloat(StringGrid1.Cells[j, 1]);
      X[j, 2]:=StrToFloat(StringGrid1.Cells[j, 2]);
      C[j, 3]:=StrToFloat(StringGrid1.Cells[j, 3]);
      P[j, 1]:=StrToFloat(StringGrid2.Cells[j, 1]);
      H[j, 2]:=StrToFloat(StringGrid2.Cells[j, 2]);
      F[j, 3]:=StrToFloat(StringGrid2.Cells[j, 3]);
      StringGrid3.Cells[j, 0]:=StringGrid1.Cells[j, 0];
      End;
For j:=1 To 10 Do
      Begin
      A:=Q[j, 1]*X[j, 2];
      B:=P[j, 1]*H[j, 2];
      End;
For j:=1 To 10 Do
      Begin
      D:=Q[j, 1]-P[j, 1];
      E:=C[j, 3]-F[j, 3];
      End;
End;

Запускаю.. Заполняю определенные ячейки стрингрида и он выдает мне ошибку! - "is not a valid floating point value"

Последний раз редактировалось Stilet; 15.05.2009 в 17:11.
LIEN вне форума Ответить с цитированием
Старый 15.05.2009, 17:08   #13
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Скорее всего в какой-то из ячеек пусто...
Возможно ячейки не совпадают...



UpDate

Она не на том "боку" просто... =)
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 15.05.2009 в 17:10. Причина: UpDate
DomiNick вне форума Ответить с цитированием
Старый 15.05.2009, 17:46   #14
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

а возможно при вводе числа вместо точки запятая при написании числа используется ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 15.05.2009, 18:17   #15
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Кое-что поменял...
Код:
Procedure TForm1.FormCreate(Sender: TObject);
Var i: Integer;
Begin
Randomize;
With StringGrid1 Do
      Begin
      FixedCols:=0;
      FixedRows:=1;
      ColCount:=4;
      RowCount:=11;
      DefaultColWidth:=100;
      RowHeights[0]:=30;
      Cells[0, 0]:='Наименование материала';
      Cells[1, 0]:='Количество материала';
      Cells[2, 0]:='Цена за ед. материала';
      Cells[3, 0]:='Общая стоимость';
      Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goTabs];
      End;
With StringGrid2 Do
      Begin
      FixedCols:=0;
      FixedRows:=1;
      ColCount:=4;
      RowCount:=11;
      DefaultColWidth:=100;
      RowHeights[0]:=30;
      Cells[0, 0]:='Наименование материала';
      Cells[1, 0]:='Количество материала';
      Cells[2, 0]:='Цена за ед. материала';
      Cells[3, 0]:='Общая стоимость';
      Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goTabs];
      End;
With StringGrid3 Do
      Begin
      FixedCols:=0;
      FixedRows:=1;
      ColCount:=3;
      RowCount:=11;
      DefaultColWidth:=100;
      RowHeights[0]:=30;
      Cells[0, 0]:='Наименование материала';
      Cells[1, 0]:='Количество материала';
      Cells[2, 0]:='Общая стоимость';
      Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goTabs];
      End;
For i:=1 To 10 Do
      Begin
      StringGrid1.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[3, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[4, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[3, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[4, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[3, i]:=IntToStr(Random(4)+4);
      End;
End;

Procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
      Q, X, C, P, H, F, K, Z: Array [1..3, 1..10] Of Real;
      A, B, D, E: Real;
      j: Integer;
Begin
For j:=1 To 10 Do
      Begin
      Q[1, j]:=StrToFloat(StringGrid1.Cells[1, j]);
      X[2, j]:=StrToFloat(StringGrid1.Cells[2, j]);
      C[3, j]:=StrToFloat(StringGrid1.Cells[3, j]);
      P[1, j]:=StrToFloat(StringGrid2.Cells[1, j]);
      H[2, j]:=StrToFloat(StringGrid2.Cells[2, j]);
      F[3, j]:=StrToFloat(StringGrid2.Cells[3, j]);
      StringGrid3.Cells[0, j]:=StringGrid1.Cells[0, j];
      End;
For j:=1 To 10 Do
      Begin
      A:=Q[1, j]*X[2, j];
      B:=P[1, j]*H[2, j];
      End;
For j:=1 To 10 Do
      Begin
      D:=Q[1, j]-P[1, j];
      E:=C[3, j]-F[3, j];
      End;
Label1.Caption:='A = '+FloatToStr(A)+#13+'B = '+FloatToStr(B)+#13+'D = '+FloatToStr(D)+#13+'E = '+FloatToStr(E);
End;
I am the First of Cyber Evolution...
I am the First to Program your Future...

Последний раз редактировалось DomiNick; 15.05.2009 в 18:20.
DomiNick вне форума Ответить с цитированием
Старый 16.05.2009, 05:18   #16
LIEN
Пользователь
 
Регистрация: 26.04.2008
Сообщений: 44
По умолчанию

Спасибо! учту все ваши советы!!!!!!!!!!!!!!
LIEN вне форума Ответить с цитированием
Старый 16.05.2009, 15:52   #17
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Восклицание

P.S.

Вот этот кусок кода
Код:
For i:=1 To 10 Do
      Begin
      StringGrid1.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[3, i]:=IntToStr(Random(4)+4);
      StringGrid1.Cells[4, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[3, i]:=IntToStr(Random(4)+4);
      StringGrid2.Cells[4, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[1, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[2, i]:=IntToStr(Random(4)+4);
      StringGrid3.Cells[3, i]:=IntToStr(Random(4)+4);
      End;
просто заполняет таблицы случайными значениями (а то как-то лень было при каждом запуске вручную вбивать 110 ячеек )...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 17.05.2009, 10:24   #18
LIEN
Пользователь
 
Регистрация: 26.04.2008
Сообщений: 44
По умолчанию

А можно еще один вопрос?
вот есть такое условие, но мне к нему надо добавить еще для StringGrid2.Cells и StringGrid3.Cells!

*****
var
j,d:integer;
begin
for j:=1 to 100 do
if StringGrid1.Cells[0,j]='' then break;
d:=j-1;
showmessage(inttostr(d));
for j:=1 to d do begin .........
*****

Не могли бы вы мне помочь как правильно??

меня хватило только на такое, но мне кажется это слишком громоздко, а подругому можно как нибудь?
*****
j,d:integer;
begin
for j:=1 to 100 do
if StringGrid1.Cells[0,j]='' then break;

begin
for j:=1 to 100 do
if StringGrid2.Cells[0,j]='' then break;

begin
for j:=1 to 100 do
if StringGrid3.Cells[0,j]='' then break;
*****
LIEN вне форума Ответить с цитированием
Старый 17.05.2009, 10:55   #19
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
*****
var
j,d:integer;
begin
for j:=1 to 100 do
if (StringGrid1.Cells[0,j]='') and
   (StringGrid2.Cells[0,j]='') and
   (StringGrid3.Cells[0,j]='') then break; // остановка если И в 1 и 2 и в 3 встретилась пустая ячейка
d:=j-1;
showmessage(inttostr(d));
for j:=1 to d do begin .........
*****
Код:
*****
var
j,d:integer;
begin
for j:=1 to 100 do
if (StringGrid1.Cells[0,j]='') or
   (StringGrid2.Cells[0,j]='') or
   (StringGrid3.Cells[0,j]='') then break; // остановка если ИЛИ в 1 или 2 или в 3 встретилась пустая ячейка
d:=j-1;
showmessage(inttostr(d));
for j:=1 to d do begin .........
*****
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 17.05.2009, 11:08   #20
LIEN
Пользователь
 
Регистрация: 26.04.2008
Сообщений: 44
По умолчанию

СПАСИБКИ!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!
LIEN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос выдает ошибку Romuald Microsoft Office Excel 2 15.04.2009 22:42
Помогите c паскалем, выдает ошибку... Ink_90 Помощь студентам 2 22.12.2008 08:31
ADOQuery - выдает ошибку kiber0net0 Общие вопросы Delphi 2 02.09.2008 19:49
Windows2003 ошибку выдает Cantana Windows 11 07.12.2007 06:04
MasterSource - выдает ошибку nataly_ukr БД в Delphi 10 12.10.2007 13:49