Разработка инвестиционного проекта ОАО "Завод по производству труб большого диаметра"

                                       for j:=1 to Length(str)do begin

                                           if (str[j]<>';') then str2:=str2+str[j]

                                                            else begin

                                                                 PlusSi[k,t]:=PlusSi[k,t]+StrToFloat(str2);

                                                                 k:=k+1;str2:='';

                                                            end;

                                           if j=Length(str) then PlusSi[k,t]:=PlusSi[k,t]+StrToFloat(str2);

                                       end;

            end else try

                       PlusSi[1,t]:=PlusSi[1,t]+StrToFloat(str);

                       PlusSi[2,t]:=PlusSi[2,t]+StrToFloat(str);

                       PlusSi[3,t]:=PlusSi[3,t]+StrToFloat(str);

                     except

                       showmessage('Ошибка при вводе значений интервалов денежных потоков!');

                       FocusControl(Stringgrid1);

                     end;

        end;

        for i:=1 to StringGrid2.RowCount-1 do begin

            str:=StringGrid2.Cells[t,i];

            if pos(';',str)<>0 then begin str2:='';k:=1;

                                       for j:=1 to Length(str)do begin

                                           if (str[j]<>';') then str2:=str2+str[j]

                                                            else begin

                                                                 if k=1 then PlusSi[3,t]:=PlusSi[3,t]-StrToFloat(str2);

                                                                 if k=2 then PlusSi[2,t]:=PlusSi[2,t]-StrToFloat(str2);

                                                                 k:=k+1;str2:='';

                                                            end;

                                           if j=Length(str) then PlusSi[1,t]:=PlusSi[1,t]-StrToFloat(str2);

                                       end;

            end else try

                       PlusSi[1,t]:=PlusSi[1,t]-StrToFloat(str);

                       PlusSi[2,t]:=PlusSi[2,t]-StrToFloat(str);

                       PlusSi[3,t]:=PlusSi[3,t]-StrToFloat(str);

                     except

                       showmessage('Ошибка при вводе значений интервалов денежных потоков!');

                       FocusControl(Stringgrid1);

                     end;

        end;

    end;

    for i:=1 to n do begin

        str:='';

        for j:=1 to 3 do begin

            str:=str+FloatToStr(PlusSi[j,i]);

            if j<>3 then str:=str+';';

        end;

        Form1.StringGrid1.Cells[i-1,1]:=str;

    end;

end;


end.



unit Risk;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Buttons, Spin, Menus;


type

  TForm8 = class(TForm)

    PageControl1: TPageControl;

    TabSheet1: TTabSheet;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    StringGrid1: TStringGrid;

    StringGrid2: TStringGrid;

    TabSheet2: TTabSheet;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    StringGrid3: TStringGrid;

    StringGrid4: TStringGrid;

    TabSheet3: TTabSheet;

    Label8: TLabel;

    StringGrid6: TStringGrid;

    Label9: TLabel;

    StringGrid7: TStringGrid;

    StringGrid8: TStringGrid;

    Label10: TLabel;

    Panel3: TPanel;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Label14: TLabel;

    SpinEdit1: TSpinEdit;

    SpinEdit2: TSpinEdit;

    Edit1: TEdit;

    Edit2: TEdit;

    OpenDialog1: TOpenDialog;

    SaveDialog1: TSaveDialog;

    CheckBox1: TCheckBox;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    N5: TMenuItem;

    N9: TMenuItem;

    CheckBox2: TCheckBox;

    Label7: TLabel;

    procedure SpinEdit1Change(Sender: TObject);

    procedure SpinEdit2Change(Sender: TObject);

    procedure Edit1Exit(Sender: TObject);

    procedure Edit2Exit(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure N7Click(Sender: TObject);

    procedure N4Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N9Click(Sender: TObject);

    procedure CheckBox2Click(Sender: TObject);

    procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid4KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid6KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid7KeyPress(Sender: TObject; var Key: Char);

    procedure StringGrid8KeyPress(Sender: TObject; var Key: Char);


   

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form8: TForm8;

  Ct,At,Zt,Simd : array[1..20] of real;{критерий покрытия,соб.капитал,заемный кап.,мат.ож.ден.потоков(прогнозир.ден.потоки)}

  Pfsr : real; {ср.зн.цены}

  Sij,Vt : array[1..20] of real;{чист.ден.потоки,риск,}

  Rt : array[1..20] of real;{кр.ликвидности}

  n,i,j,f,l,ii : integer;  {число ПУП,число ресурсов,}

  d,NPV,NPVi,NPVj,s,sum,sum2,sum3,ENPV : real; {коэф.дисконтирования,ЧПЭ,мат.ож.NPV}

  Ip : real; {первонач.кап.вложения}

  Pf : array[1..20,1..20] of real; {цена на ресурс в каждый ПУП,  }

  Pkrit,Xf : array[1..20] of real; {Критический лимит цены,доля ресурса в портфеле ресурсов}


implementation


uses Results,Cov, PriceCov, Riskproject, normgenerator;


{$R *.dfm}


procedure TForm8.SpinEdit1Change(Sender: TObject);

begin

   n:=SpinEdit1.Value;

   StringGrid1.ColCount:=n; StringGrid2.ColCount:=n; StringGrid3.ColCount:=n; StringGrid4.ColCount:=n;

   Stringgrid7.RowCount:=n+1; Form3.StringGrid1.ColCount:=n+1;Form3.Stringgrid1.RowCount:=n+1;

   Form4.StringGrid1.ColCount:=n+1; Form4.Stringgrid1.RowCount:=n+1;

   Form7.StringGrid1.ColCount:=n+3; Form7.StringGrid2.ColCount:=n+2;Form7.StringGrid3.ColCount:=n+1;

   For i:=1 to n do begin

        Stringgrid1.Cells[i-1,0]:=IntToStr(i); Stringgrid2.Cells[i-1,0]:=IntToStr(i);

        Stringgrid3.Cells[i-1,0]:=IntToStr(i); Stringgrid4.Cells[i-1,0]:=IntToStr(i);

        Form3.Stringgrid1.Cells[i,0]:=IntToStr(i);Form3.Stringgrid1.Cells[0,i]:=IntToStr(i);

        Form4.Stringgrid1.Cells[i,0]:=IntToStr(i); Form4.Stringgrid1.Cells[0,i]:=IntToStr(i);

        Form7.StringGrid1.Cells[i+2,0]:=IntToStr(i); Form7.StringGrid2.Cells[i+1,0]:=IntToStr(i);

        Form7.StringGrid3.Cells[i,0]:=IntToStr(i); Stringgrid7.Cells[0,i]:=IntToStr(i);


   end;

end;


procedure TForm8.SpinEdit2Change(Sender: TObject);

begin

   f:=SpinEdit2.Value;

   StringGrid6.ColCount:=f;StringGrid7.ColCount:=f+1;

   StringGrid7.RowCount:=n+1; StringGrid8.ColCount:=f;

   For i:=1 to f do begin

        Stringgrid6.Cells[i-1,0]:=IntToStr(i);

        Stringgrid7.Cells[i,0]:=IntToStr(i);

        Stringgrid8.Cells[i-1,0]:=IntToStr(i);

   end;

   For i:=1 to n+1 do begin

       StringGrid7.Cells[0,i]:=IntToStr(i);

   end;

end;



procedure TForm8.Edit1Exit(Sender: TObject);

begin

   try

     d:=StrToFloat(Edit1.Text);

   except

     Showmessage('Неправельный ввод данных!');


   end;

end;


procedure TForm8.Edit2Exit(Sender: TObject);

begin

   try

     Ip:=StrToFloat(Edit2.Text);

   except

     Showmessage('Неправельный ввод данных!');

   end;

end;


procedure TForm8.FormCreate(Sender: TObject);

begin

   n:=5;f:=5;d:=1.2;Ip:=10;

   For i:=1 to 5 do begin

        Stringgrid1.Cells[i-1,0]:=IntToStr(i); Stringgrid2.Cells[i-1,0]:=IntToStr(i);

        Stringgrid3.Cells[i-1,0]:=IntToStr(i); Stringgrid4.Cells[i-1,0]:=IntToStr(i);

        Stringgrid6.Cells[i-1,0]:=IntToStr(i); Stringgrid7.Cells[0,i]:=IntToStr(i);

        StringGrid7.Cells[i,0]:=IntToStr(i);   Stringgrid8.Cells[i-1,0]:=IntToStr(i);

   end;

   For i:=1 to 20 do begin

       For j:=1 to 20 do begin

           Pcovar[i,j]:=0;

           Covar[i,j]:=0;

       end;

   end;

end;


procedure TForm8.CheckBox1Click(Sender: TObject);

begin

  if checkBox1.Checked then Form4.Show;

end;



procedure TForm8.N7Click(Sender: TObject);

var

 keyw: boolean;

begin

// Заполнение данных в массивы

keyw:=true;

try

    For i:=0 to n-1 do begin

       Zt[i+1]:=StrToFloat(StringGrid1.Cells[i,1]);

       At[i+1]:=StrToFloat(StringGrid2.Cells[i,1]);

       Simd[i+1]:=StrToFloat(Stringgrid3.Cells[i,1]);

       Sij[i+1]:=StrToFloat(Stringgrid4.Cells[i,1]);

    end;

    s:=0;

    For i:=1 to f do begin

        Pkrit[i]:=StrToFloat(Stringgrid8.Cells[i-1,1]);

        Xf[i]:= StrToFloat(Stringgrid6.Cells[i-1,1]);

        s:=s+Xf[i];

    end;

    if s<>1 then begin

      Showmessage('Общяя сумма долей ресурсов в портфеле должна быть меньше равна единице!');

      keyw:=false;

      PageControl1.ActivePage:=TabSheet3;

      FocusControl(StringGrid6);

    end;

    For j:=1 to f do begin

     for i:=1 to n do begin

          Pf[i,j]:=StrToFloat(Stringgrid7.Cells[j,i]);

     end;

    end;

Except

  ShowMessage('Неправильно заполнены поля!');

  keyw:=false;

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25



Реклама
В соцсетях
рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать