Разработка программного модуля для нахождения оптимальных предельно-допустимых выбросов в атмосферу от группы источников
var
s,s_temp,ss : string;
countPoint : integer;
countfunnel : integer;
point_pdk : tExtArray;
point_cf : tExtArray;
funnel_m : tExtArray;
funnel_min : tExtArray;
funnel_name : tsArray;
pointfunnelx2 : tExtArrayx2;
i,j : integer;
x : tExtArray;
empty : boolean;
h : textfile;
funnelSumM,sumX:real;
begin
funnelSumM:=0;
sumX:=0; <
p>memo1.Clear;
for i:=0 to checkListBox1.Items.Count-1 do begin
if CheckListBox1.Checked[i] then begin
application.ProcessMessages;
s:=checklistbox1.Items.Strings[i];
s:=returnSubString(s);
application.ProcessMessages;
get_point (s,countPoint,point_pdk);
get_funnel(s,countFunnel,funnel_name,funnel_m,funnel_min);
get_pointfunnel(s,countPoint,countfunnel,funnel_name,funnel_m,pointfunnelx2,point_cf);
get_simplexsolve(countPoint,CountFunnel,point_pdk,point_cf,funnel_m,funnel_min,pointfunnelx2,x,s_temp);
AssignFile(h,dir_path+'\RESULT\'+'h_pd'+s+'.gpv');
rewrite(h);
if s_temp='решение найдено' then begin
memo1.lines.Add('');
memo1.lines.Add(' Результаты расчета ПДВ (симплекс метод):');
memo1.lines.Add(' ПРИМЕСЬ='+s);
memo1.lines.Add('');
memo1.lines.Add('---------------------------------------------------------');
memo1.lines.Add('| Код |Существую-|Минимально| Расчетное | коэфф. |');
memo1.lines.Add('| источника |щий выброс|возможный | значение | норми- |');
memo1.lines.Add('| выброса | г/с | выброс | П Д В | рования |');
memo1.lines.Add('|-----------|----------|---г/с----|----г/с----|---------|');
writeln(h,'');
writeln(h,' Результаты расчета ПДВ (симплекс метод):');
writeln(h,' ПРИМЕСЬ='+s);
writeln(h,'');
writeln(h,'---------------------------------------------------------');
writeln(h,'| Код |Существую-|Минимально| Расчетное | коэфф. |');
writeln(h,'| источника |щий выброс|возможный | значение | норми- |');
writeln(h,'| выброса | г/с | выброс | П Д В | рования |');
writeln(h,'|-----------|----------|---г/с----|----г/с----|---------|');
empty:=true;
for j:=0 to countFunnel-1 do begin
funnelSumM:=FunnelSumM+funnel_m[j];
sumX:=SumX+x[j];
if abs(x[j]-funnel_m[j])>0.0000001 then
begin
ss:='|'+funnel_name[j]+'| '+FloatToStrF(funnel_m[j],ffFixed,1000,6)+' | '+FloatToStrF(funnel_min[j],ffFixed,1000,6);
ss:=ss+' | '+FloatToStrF(x[j],ffFixed,1000,7)+' | '+FloatToStrF(x[j]/funnel_m[j],ffFixed,1000,5)+' |';
memo1.lines.Add(ss);
writeln(h,ss);
empty:=false;
end;
end;
ss:='| в сумме: '+FloatToStrF(funnelSumM,ffFixed,1000,6)+' ';
ss:=ss+FloatToStrF(sumX,ffFixed,1000,6)+' | '+ FloatToStrF(sumX/funnelSumM,ffFixed,1000,5)+' |';
if empty then begin
memo1.lines.Add('| Нет выбросов для снижения |');
writeln(h,'| Нет выбросов для снижения |');
end;
if not empty then begin
memo1.lines.Add('- - - - - - - - - - - - - - - - - - - - - - - - - - - - -');
memo1.lines.Add(ss);
writeln(h,'- - - - - - - - - - - - - - - - - - - - - - - - - - - - -');
writeln(h,ss);
end;
memo1.lines.Add('---------------------------------------------------------');
memo1.lines.Add('');
memo1.lines.Add('');
writeln(h,'---------------------------------------------------------');
writeln(h,'');
writeln(h,'');
end else begin
memo1.lines.Add('');
memo1.lines.Add(' Результаты расчета ПДВ (симплекс метод):');
memo1.lines.Add(' ПРИМЕСЬ='+s);
memo1.lines.Add('');
memo1.lines.Add('---------------------------------------------------------');
memo1.lines.Add('| Решение не найдено |');
memo1.lines.Add('---------------------------------------------------------');
writeln(h,'');
writeln(h,' Результаты расчета ПДВ (симплекс метод):');
writeln(h,' ПРИМЕСЬ='+s);
writeln(h,'');
writeln(h,'---------------------------------------------------------');
writeln(h,'| Решение не найдено |');
writeln(h,'---------------------------------------------------------');
end;
closefile(h);
end;
// closefile(h);
end;
end;
//==============================================================================
//поиск файла по маске
procedure FindFiles(StartFolder, Mask: string; List: TStrings;
ScanSubFolders: Boolean = True);
var
SearchRec: TSearchRec;
FindResult: Integer;
begin
List.BeginUpdate;
try
StartFolder := IncludeTrailingBackslash(StartFolder);
FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
try
while FindResult = 0 do
with SearchRec do
begin
if (Attr and faDirectory) <> 0 then
begin
if ScanSubFolders and (Name <> '.') and (Name <> ' ') then
FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
end
else
begin
if MatchesMask(Name, Mask) then begin
List.Add(copy(Name,5,4));
//showmessage(StartFolder + Name);
end;
end;
FindResult := FindNext(SearchRec);
end;
finally
FindClose(SearchRec);
end;
finally
List.EndUpdate;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DecimalSeparator:=MyDecimalSeparator;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
dir_path:=ReadIni;
edit1.Text:=dir_path;
{--}
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
h,h2:textfile;
i,j,k,n:integer;
s_temp:string;
s: array of array of string;
begin
dir_path:=edit1.Text;
checklistbox1.Items.Clear;
i:=0;
AssignFile(h,dir_path+'\WORK\activ2.txt');
reset(h);
//readln(h,s_temp);
while not EOF(h) do begin//чтение файла (установка размера массива)
readln(h,s_temp);
inc(i);
end;
closefile(h);
setlength(s,i,2);
AssignFile(h2,dir_path+'\WORK\activ2.txt');
reset(h2);
for j:=0 to i-1 do begin
readln(h2,s_temp);
s[j,0]:=copy(s_temp,24,4);
s[j,1]:=copy(s_temp,30,55);
end;
closefile(h2);
FindFiles(dir_path, 'htop*.ppp', checklistbox1.items, true);
n:=checklistbox1.items.Count-1;
for j:=0 to n do begin
for k:=0 to i-1 do begin
//showmessage(s[k,0]+' -| ');
if checklistbox1.items[0]=s[k,0] then begin
//showmessage(s[j,0]+' | '+s[j,1]);
checklistbox1.items.Delete(0);
checklistbox1.items.Add(s[k,0]+' '+s[k,1]);
end;
end;
end;
end;
procedure TForm1.N2Click(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0 MAX_PATH] of char;
TempPath : array[0 MAX_PATH] of char;
begin
FillChar(BrowseInfo, siCeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.psCDisplayName := @DisplayName;
TitleName := 'Please specify a directory';
BrowseInfo.lpsCTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
Другие рефераты на тему «Экология и охрана природы»:
Поиск рефератов
Последние рефераты раздела
- Влияние Чекмагушевского молочного завода на загрязнение вод реки Чебекей
- Влияние антропогенного фактора на загрязнение реки Ляля
- Киотский протокол - как механизм регулирования глобальных экологических проблем на международном уровне
- Лицензирование природопользования, деятельности в области охраны окружающей среды и обеспечения экологической безопасности
- Мировые тенденции развития ядерной технологии
- Негативные изменения состояния водного бассейна крупного города под влиянием деятельности человека
- Общественная экологическая экспертиза и экологический контроль