Показать сообщение отдельно
  #1  
Старый 08.09.2012, 02:26
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию Модуль для работы с массивами

есть 2 массива из них создается 3

если вы знаете проще описание данных инструкций, буду очень признателен
Код:
var
   tabl1:array[1..9,1..12]of variant;
   shapka:array[1..9]of string=('Номер строки','Номер схемы','A, см','P1, кН','P2, кН','P3, кН','l1, м','l2, м','l3, м');
   word:array[1..8]of string=('е','в','г','д','е','г','д','е');
   stolb1_2:array[1..10]of integer;
   stolbA:array[1..10]of integer;
   stolbP1:array[1..10]of integer=(300,270,290,280,260,250,240,230,220,210);
   stolbP2:array[1..10]of integer=(150,130,140,120,160,150,140,130,120,110);
   stolbP3:array[1..10]of integer=(70,80,90,60,75,50,80,75,70,100);
   stolbl1:array[1..10]of real=(0.60,0.50,1.00,0.90,0.80,0.70,1.00,1.10,1.15,1.20);
   stolbl2:array[1..10]of real=(0.40,0.50,0.60,0.70,0.80,0.90,1.00,0.80,0.40,1.20);
   stolbl3:array[1..10]of real=(0.50,0.40,1.00,0.80,0.60,0.70,1.00,0.80,0.90,1.20);

   tabl2:array[1..6,1..2]of variant;
   abvgdeword:array[1..6]of string;
   abvgde:array[1..6]of integer;

   tabl3:array[1..8,1..4]of variant;
   abvgdecifri:array[1..8]of integer;
   abvgdecifrizamena:array[1..8]of integer;
   dannie:array[1..9]of variant;

procedure TForm1.Button1Click(Sender: TObject);
var
   i,j:integer;
   a,b,v,g,d,e:integer;
begin
     for i:=1 to 9 do
        begin
             tabl1[i,1]:=shapka[i];
        end;

     for i:=1 to 8 do
        begin
             tabl1[i+1,2]:=word[i];
        end;

     for j:=1 to 10 do
        begin
             stolb1_2[j]:=j;
             stolbA[j]:=29+j;
        end;

     for j:=1 to 10 do
        begin
             tabl1[1,j+2]:=stolb1_2[j];
             tabl1[2,j+2]:=stolb1_2[j];
             tabl1[3,j+2]:=stolbA[j];
             tabl1[4,j+2]:=stolbP1[j];
             tabl1[5,j+2]:=stolbP2[j];
             tabl1[6,j+2]:=stolbP3[j];
             tabl1[7,j+2]:=stolbl1[j];
             tabl1[8,j+2]:=stolbl2[j];
             tabl1[9,j+2]:=stolbl3[j];
        end;

     for i:=1 to 9 do
        begin
             for j:=1 to 12 do
                begin
                     stringgrid1.Cells[i-1,j-1]:=tabl1[i,j];
                end;
        end;

     case length(edit1.Text) of
         1:
           begin
                a:=0;
                b:=strtoint(copy(edit1.Text,1,1));
                v:=a;
                g:=b;
                d:=a;
                e:=b;
           end;
         2:
           begin
                a:=strtoint(copy(edit1.Text,1,1));
                v:=a;
                d:=a;
                b:=strtoint(copy(edit1.Text,2,1));
                g:=b;
                e:=b;
           end;
         3:
           begin
                a:=strtoint(copy(edit1.Text,1,1));
                g:=a;
                b:=strtoint(copy(edit1.Text,2,1));
                d:=b;
                v:=strtoint(copy(edit1.Text,3,1));
                e:=v;
           end;
     end;

     abvgdeword[1]:='а';
     abvgdeword[2]:='б';
     abvgdeword[3]:='в';
     abvgdeword[4]:='г';
     abvgdeword[5]:='д';
     abvgdeword[6]:='е';

     abvgde[1]:=a;
     abvgde[2]:=b;
     abvgde[3]:=v;
     abvgde[4]:=g;
     abvgde[5]:=d;
     abvgde[6]:=e;

     for i:=1 to 6 do
        begin
             tabl2[i,1]:=abvgdeword[i];
             tabl2[i,2]:=abvgde[i];
        end;

     for i:=1 to 6 do
        begin
             for j:=1 to 2 do
                begin
                     stringgrid2.Cells[i-1,j-1]:=tabl2[i,j];
                end;
        end;

     for j:=1 to 8 do
        begin
             for i:=1 to 6 do
                begin
                     if (tabl2[i,1])=(tabl1[j+1,2])
                       then
                           begin
                                abvgdecifri[j]:=tabl2[i,2];
                           end
                       else continue;
                end;
        end;

     for i:=1 to 8 do
        begin
             abvgdecifrizamena[i]:=abvgdecifri[i];
             if abvgdecifrizamena[i]=0
               then abvgdecifrizamena[i]:=10
               else continue;
        end;

     for j:=1 to 10 do
        begin
             for i:=1 to 8 do
                begin
                     if abvgdecifrizamena[i]=tabl1[1,j+2]
                       then dannie[i]:=tabl1[i+1,j+2]
                       else continue;
                end;
        end;

     for i:=1 to 8 do
        begin
             tabl3[i,1]:=tabl1[i+1,1];
             tabl3[i,2]:=tabl1[i+1,2];
             tabl3[i,3]:=abvgdecifri[i];
             tabl3[i,4]:=dannie[i];
        end;

     for j:=1 to 4 do
        begin
             for i:=1 to 8 do
                begin
                     stringgrid3.Cells[i-1,j-1]:=tabl3[i,j];
                end;
        end;

end;

что хочу сделать:
1) пар массивов очень много, около 40, описывать инструкции по созданию 3 массива для каждой пары очень долго, хотелось бы создать модуль который все это бы умел
2) 2 массив не меняется, меняются только 1 и 3
3)в массивах будут меняться только число столбцов, число строк останется неизменным, меняются значения элементов массивов
Ответить с цитированием