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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2008, 19:29   #1
forumu
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 36
По умолчанию Массивы Delphi

Уважаемые люди, помогите пожалуйста разобраться. Здесь в StrinGrid2 выводится число m после каждого числа где есть ноль, а как сделать так чтобы в StrinGrid 2 выводились m ПЕРЕД каждым числом, где есть цифра ноль. То есть не после а перед, я не понимаю как это реализовать..
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    LabeledEdit1: TLabeledEdit;
    Button1: TButton;
    Button2: TButton;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    StringGrid4: TStringGrid;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  m:array[0..280]of integer;
  b:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
StringGrid1.ColCount:=strtoint(LabeledEdit1.Text);
StringGrid4.ColCount:=strtoint(LabeledEdit1.Text);
for i:=0 to StringGrid1.ColCount-1 do begin
 StringGrid4.Cells[i,0]:=inttostr(m[random(280)]);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);

var
i,k:integer;
begin
k:=0;
for i:=-140 to 140 do begin
 m[k]:=i;
 k:=k+1;
end;

end;


procedure TForm1.Button2Click(Sender: TObject);
var
i,j,m,k,b,o,p:integer;
op:string;
mm:array of string;
begin
k:=0;
i:=0;
o:=0;
StringGrid4.ColCount:=strtoint(LabeledEdit1.Text);
for i:=0 to StringGrid1.ColCount-1 do begin
 StringGrid1.Cells[i,0]:=StringGrid4.Cells[i,0];
end;
i:=0;
while  i<=StringGrid1.ColCount-1 do begin
  if (StringGrid1.cells[i,0][1]=StringGrid1.cells[i,0][2])or((StringGrid1.cells[i,0][1]='-')and(length(StringGrid1.cells[i,0])>2)and
     (StringGrid1.cells[i,0][2]=StringGrid1.cells[i,0][3]))  then begin
       setlength(mm,StringGrid1.ColCount-i);
       k:=0;
       for j:=i+1 to StringGrid1.ColCount-1 do begin
        mm[k]:= StringGrid1.cells[j,0];
        k:=k+1;
       end;
        StringGrid1.ColCount:=StringGrid1.ColCount-1;
       k:=0;
       for j:=i to StringGrid1.ColCount-1 do begin
        StringGrid1.cells[j,0]:=mm[k];
        k:=k+1;
       end;
     end else begin
     k:=0;
     if i<StringGrid1.ColCount-1 then
      i:=i+1
     else break;
  end;
end;

m:=strtoint(edit2.text);
if pos('0',inttostr(m))<>0 then
o:=1;

StringGrid2.ColCount:=StringGrid1.ColCount;
for i:=0 to StringGrid1.ColCount-1 do begin
 StringGrid2.Cells[i,0]:=StringGrid1.Cells[i,0];
end;
k:=0;
i:=0;
while  i<=StringGrid2.ColCount-1 do begin
  if o=0 then begin
     if pos('0',StringGrid2.cells[i,0])<>0 then begin
      setlength(mm,StringGrid2.ColCount-i);
      k:=0;
      for j:=i+1 to StringGrid2.ColCount-1 do begin
       mm[k]:= StringGrid2.cells[j,0];
       k:=k+1;
      end;
      StringGrid2.ColCount:=StringGrid2.ColCount+1;
      StringGrid2.cells[i+1,0]:=inttostr(m);
      k:=0;
      for j:=i+2 to StringGrid2.ColCount-1 do begin
       StringGrid2.cells[j,0]:=mm[k];
       k:=k+1;
      end;
     end;
     k:=0;
     i:=i+1;
   end else begin
     if pos('0',StringGrid2.cells[i,0])<>0 then begin
      setlength(mm,StringGrid2.ColCount-i);
      k:=0;
      for j:=i+1 to StringGrid2.ColCount-1 do begin
       mm[k]:= StringGrid2.cells[j,0];
       k:=k+1;
      end;
      StringGrid2.ColCount:=StringGrid2.ColCount+1;
      StringGrid2.cells[i+1,0]:=inttostr(m);
      i:=i+1;
      k:=0;
      for j:=i-1+2 to StringGrid2.ColCount-1 do begin
       StringGrid2.cells[j,0]:=mm[k];
       k:=k+1;
      end;
     end;
     k:=0;
     i:=i+1;
   end;

end;

StringGrid3.ColCount:=StringGrid4.ColCount;
for i:=0 to StringGrid4.ColCount-1 do begin
 StringGrid3.Cells[i,0]:=StringGrid4.Cells[i,0];
end;

 op:=stringGrid3.cells[0,0];
 StringGrid3.cells[0,0]:=StringGrid3.cells[round(StringGrid3.ColCount/2-1),0];
 StringGrid3.cells[round(StringGrid3.ColCount/2-1),0]:=op;
 op:=stringGrid3.cells[1,0];
 StringGrid3.cells[1,0]:=StringGrid3.cells[round(StringGrid3.ColCount/2),0];
 StringGrid3.cells[round(StringGrid3.ColCount/2),0]:=op;

end;

end.
forumu вне форума Ответить с цитированием
Старый 10.01.2008, 20:11   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ты бы еще больше кода привел

По теме. В StringGrid числа в ячейках содержит в виде строк. Чтобы изменить содержание ячейки, нужно изменить соотв. строку.
Пример: s - строка(из ячейки) m - число к-рое нужно добавить
вариант перед
s:=s+' '+IntToStr(m);
вариант после
s:=IntToStr(m)+' '+s;
Надеюсь я правильно понял, или число в соседнюю ячейку добавлять?
А где что в коде менять это ты уж сам.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 11.01.2008, 10:07   #3
forumu
Пользователь
 
Регистрация: 19.11.2007
Сообщений: 36
По умолчанию

Спасибо, все понятно, исправить можно..
forumu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на массивы и процедуры. Delphi Alex_2017 Помощь студентам 0 29.05.2008 12:48
массивы ShenDy Общие вопросы C/C++ 4 17.04.2008 00:01