ПЗ (1229304), страница 13
Текст из файла (страница 13)
//---------------------------------------------------------------------------
void func_log(char *Str, char *S)
{
SYSTEMTIME time;
GetLocalTime(&time);
if (!FileExists("LogFile.txt"))
{
LogFile = fopen("LogFile.txt","at");
fprintf(LogFile,"Введение лога\n\n%s %s ",Str,S);
fprintf(LogFile,"%d:%d:%d(%d)",time.wHour,time.wMinute,
time.wSecond,time.wMilliseconds); //время
}
else
{
LogFile = fopen("LogFile.txt","at");
fprintf(LogFile,"\n%s %s ",Str,S);
fprintf(LogFile,"%d:%d:%d(%d)",time.wHour,time.wMinute,
time.wSecond,time.wMilliseconds); //время
}
fclose(LogFile);
}
//---------------------------------------------------------------------------
void func_log(UnicodeString Name_File, UnicodeString where, UnicodeString what)
{
SYSTEMTIME time;
GetLocalTime(&time);
if (!FileExists(Name_File.t_str()))
{
LogFile = fopen(Name_File.t_str(),"at");
fprintf(LogFile,"Введение лога\n\n%s %s ",where.t_str(),what.t_str());
fprintf(LogFile,"%d:%d:%d(%d)",time.wHour,time.wMinute,
time.wSecond,time.wMilliseconds); //время
}
else
{
LogFile = fopen(Name_File.t_str(),"at");
fprintf(LogFile,"\n%s %s ",where.t_str(),what.t_str());
fprintf(LogFile,"%d:%d:%d(%d)",time.wHour,time.wMinute,
time.wSecond,time.wMilliseconds); //время
}
fclose(LogFile);
}
//---------------------------------------------------------------------------
char * Read_From_File(char *P)
{
const int strsz = 80;
const int wrdsz = 20;
char str_of_file[strsz],str_so_slovom[wrdsz];
char * s3 = new char [wrdsz];
if ((f = fopen("serv_config.txt", "rt")) == NULL)
{
ShowMessage("Не удается найти фаил 'serv_config.txt'");
return 0;
}
do
{
memset(str_of_file, 0, sizeof(char)*strsz);
fscanf(f,"%s",&str_of_file);
if (!strcmp(str_of_file,P))
{
memset(str_so_slovom, 0, sizeof(char)*wrdsz);
fscanf(f,"%s%s",&str_of_file,&str_so_slovom);
};
}
while(!feof(f));
fclose(f);
strncpy(s3, str_so_slovom, wrdsz);
return s3;
}
//---------------------------------------------------------------------------
UnicodeString Read_From_Text(UnicodeString tx,UnicodeString s)
{
int a = 0, b = tx.Pos(s), c = 1;
try
{
if (b==0) return 0;
while (tx[b+s.Length()+c] == ' ') {c++;}
for (int i=b+s.Length()+c;i<=tx.Length();i++)
{
if ((tx[i] == '\n') || (tx[i] == ' ')) break;
a++;
}
}
catch(...){ShowMessage("Ошибка в Read_From_Text " + s);}
return (tx.SubString(b+s.Length()+c,a));
}
//---------------------------------------------------------------------------
void Receive_Inf(UnicodeString tx, int i)
{
try
{
ArrEnter[i].Name_of_client = Read_From_Text(tx,"My_Name");
ArrEnter[i].Number_Client = StrToInt(Read_From_Text(tx,"Number_Client"));
ArrEnter[i].cur_cash = StrToFloat(Read_From_Text(tx,"cur_cash"));
ArrEnter[i].inv = StrToInt(Read_From_Text(tx,"inv"));
ArrEnter[i].pow_cur_lev = StrToFloat(Read_From_Text(tx,"pow_cur_lev"));
ArrEnter[i].inv_SRW = StrToInt(Read_From_Text(tx,"inv_SRW"));
ArrEnter[i].SRW_level = StrToFloat(Read_From_Text(tx,"SRW_level"));
ArrEnter[i].SRW_inc_price = StrToInt(Read_From_Text(tx,"SRW_inc_price"));
ArrEnter[i].marketing = StrToInt(Read_From_Text(tx,"marketing"));
ArrEnter[i].planed_output = StrToInt(Read_From_Text(tx,"planed_output"));
ArrEnter[i].cur_occupy = StrToFloat(Read_From_Text(tx,"cur_occupy"));
ArrEnter[i].repayment = StrToInt(Read_From_Text(tx,"repayment"));
ArrEnter[i].price_prod = StrToInt(Read_From_Text(tx,"price_prod"));
ArrEnter[i].store = StrToInt(Read_From_Text(tx,"store"));
}
catch(...) {ShowMessage("Ошибка в Receive_Inf");}
}
//---------------------------------------------------------------------------
UnicodeString Send_Inf(int i)
{
AnsiString s;
s = "My_Name " + ArrEnter[i].Name_of_client + " \r\n"
"Number_Client " + IntToStr(ArrEnter[i].Number_Client) + " \r\n"
"cur_cash " + FloatToStr(ArrEnter[i].cur_cash) + " \r\n"
"inv " + IntToStr(ArrEnter[i].inv) + " \r\n"
"pow_cur_lev " + FloatToStr(ArrEnter[i].pow_cur_lev) + " \r\n"
"pow_inc_price " + FloatToStr(ArrEnter[i].pow_inc_price) + " \r\n"
"SRW_level " + FloatToStr(ArrEnter[i].SRW_level) + " \r\n"
"SRW_inc_price " + IntToStr(ArrEnter[i].SRW_inc_price) + " \r\n"
"inv_SRW " + IntToStr(ArrEnter[i].inv_SRW) + " \r\n"
"SRW_start_inc_price "
+ IntToStr(ArrEnter[i].SRW_start_inc_price) + " \r\n"
"marketing " + IntToStr(ArrEnter[i].marketing) + " \r\n"
"part_mark " + IntToStr(ArrEnter[i].part_mark) + " \r\n"
"st_inner_price "+ IntToStr(ArrEnter[i].st_inner_price) + " \r\n"
"planed_output " + IntToStr(ArrEnter[i].planed_output) + " \r\n"
"pow_use_lev " + IntToStr(ArrEnter[i].pow_use_lev) + " \r\n"
"trg_inn_price " + FloatToStr(ArrEnter[i].trg_inn_price) + " \r\n"
"cur_inn_price " + FloatToStr(ArrEnter[i].cur_inn_price) + " \r\n"
"trg_output " + FloatToStr(ArrEnter[i].trg_output) + " \r\n"
"amort_perc " + IntToStr(ArrEnter[i].amort_perc) + " \r\n"
"pow_load " + FloatToStr(ArrEnter[i].pow_load) + " \r\n"
"cur_amort_perc "+ FloatToStr(ArrEnter[i].cur_amort_perc) + " \r\n"
"max_occupy " + FloatToStr(ArrEnter[i].max_occupy) + " \r\n"
"cur_occupy " + FloatToStr(ArrEnter[i].cur_occupy) + " \r\n"
"step_occupy " + FloatToStr(ArrEnter[i].step_occupy) + " \r\n"
"bank_perc " + IntToStr(ArrEnter[i].bank_perc) + " \r\n"
"repayment " + IntToStr(ArrEnter[i].repayment) + " \r\n"
"attractivness " + FloatToStr(ArrEnter[i].attractivness) + " \r\n"
"part_attr " + IntToStr(ArrEnter[i].part_attr) + " \r\n"
"price_prod " + IntToStr(ArrEnter[i].price_prod) + " \r\n"
"store " + IntToStr(ArrEnter[i].store) + " \r\n"
"gross_profit " + FloatToStr(ArrEnter[i].gross_profit) + " \r\n"
"part_gross_profit "
+ FloatToStr(ArrEnter[i].part_gross_profit)+ " \r\n"
"tax " + FloatToStr(ArrEnter[i].tax) + " \r\n"
"sold " + IntToStr(ArrEnter[i].sold) + " \r\n"
"nobuy " + IntToStr(ArrEnter[i].NoBuy) + " \r\n"
"part_sold " + FloatToStr(ArrEnter[i].part_sold) + " \r\n"
"V_market " + IntToStr(V_market) + " \r\n"
"USD " + IntToStr(USD) + " \r\n"
"timer " + IntToStr(Timer) + " \r\n" ;
//////////////////////////////////////////////////////
return s;
}
//----------------------------------------------------------------------------
void Create_Variables()
{
try
{
ArrEnter = new Enterprice[quantity_of_users];
dead = new int[quantity_of_users];
}
catch(...){ShowMessage("Create_Variables");}
}
//----------------------------------------------------------------------------
void Incialization_Variables()
{
try
{
V_market = StrToInt(Read_From_File("V_market"));
USD = Func_USD(Read_From_File("USD"));
for (int i = 0; i < quantity_of_users; i++)
{
ArrEnter[i].Host = 0;
ArrEnter[i].Port = 0;
ArrEnter[i].Number_Client = 0;
// начальная наличность //
ArrEnter[i].cur_cash = StrToFloat(Read_From_File("cur_cash"));
///фонды///
ArrEnter[i].inv = 0;
ArrEnter[i].pow_cur_lev = StrToFloat(Read_From_File("pow_cur_lev"));
ArrEnter[i].pow_inc_price = StrToFloat(Read_From_File("pow_inc_price"));
///НИР///
ArrEnter[i].inv_SRW = 0;
ArrEnter[i].SRW_level = 0;
ArrEnter[i].SRW_start_inc_price = StrToInt(Read_From_File("SRW_start_inc_price"));
ArrEnter[i].SRW_inc_price = ArrEnter[i].SRW_start_inc_price;
///Маркетинг///
ArrEnter[i].marketing = 0;
ArrEnter[i].part_mark = 0;
///Выпуск товара///
ArrEnter[i].st_inner_price = StrToInt(Read_From_File("st_inner_price"));
ArrEnter[i].cur_inn_price = 0;
ArrEnter[i].planed_output = 0;
ArrEnter[i].pow_use_lev = 0;
ArrEnter[i].trg_inn_price = 0;
ArrEnter[i].trg_output = 0;
///амортизация///
ArrEnter[i].amort_perc = StrToInt(Read_From_File("amort_perc"));
ArrEnter[i].pow_load = 0;
ArrEnter[i].cur_amort_perc = 0;
/// банк ///
ArrEnter[i].bank_perc = StrToInt(Read_From_File("bank_perc"));
ArrEnter[i].max_occupy = StrToInt(Read_From_File("max_occupy"));
ArrEnter[i].cur_occupy = 0;
ArrEnter[i].step_occupy = 0;
ArrEnter[i].repayment = 0;
ArrEnter[i].attractivness = 0;
ArrEnter[i].part_attr = 0;
ArrEnter[i].tax = StrToInt(Read_From_File("tax"));
ArrEnter[i].price_prod = 0;
ArrEnter[i].store = 0;
ArrEnter[i].gross_profit = 0;
ArrEnter[i].part_gross_profit = 0;
ArrEnter[i].sold = 0;
ArrEnter[i].NoBuy = 0;
ArrEnter[i].part_sold = 0;
Timer = StrToInt(Read_From_File("timer"));
}
}
catch(...){ShowMessage("Initialization_Variables");}
}
void Incialization_Variables_2()
{
try
{
V_market = StrToInt(Form1->EMarket->Text);
AnsiString vUSD;
if (Form1->RGPeople->ItemIndex == 0)
{vUSD = "up";}
if (Form1->RGPeople->ItemIndex == 1)
{vUSD = "stable";}
if (Form1->RGPeople->ItemIndex == 2)
{vUSD = "down";}
USD = Func_USD(vUSD);
for (int i = 0; i < quantity_of_users; i++)
{
ArrEnter[i].Host = 0;
ArrEnter[i].Port = 0;
ArrEnter[i].Number_Client = 0;
// начальная наличность //
ArrEnter[i].cur_cash = StrToFloat(Form1->ECash->Text);
///фонды///
ArrEnter[i].inv = 0;
ArrEnter[i].pow_cur_lev = StrToFloat(Form1->EFonds->Text);
ArrEnter[i].pow_inc_price = StrToFloat(Form1->EIncPriceFonds->Text);
///НИР///
ArrEnter[i].inv_SRW = 0;
ArrEnter[i].SRW_level = 0;
ArrEnter[i].SRW_start_inc_price = StrToInt(Form1->EPriceNIR->Text);
ArrEnter[i].SRW_inc_price = ArrEnter[i].SRW_start_inc_price;
///Маркетинг///
ArrEnter[i].marketing = 0;
ArrEnter[i].part_mark = 0;
///Выпуск товара///
ArrEnter[i].st_inner_price = StrToInt(Form1->EPriceProd->Text);
ArrEnter[i].cur_inn_price = 0;
ArrEnter[i].planed_output = 0;
ArrEnter[i].pow_use_lev = 0;
ArrEnter[i].trg_inn_price = 0;
ArrEnter[i].trg_output = 0;
///амортизация///
ArrEnter[i].amort_perc = StrToInt(Form1->EAmort->Text);
ArrEnter[i].pow_load = 0;
ArrEnter[i].cur_amort_perc = 0;
/// банк ///
ArrEnter[i].bank_perc = StrToInt(Form1->EPrc->Text);
ArrEnter[i].max_occupy = StrToInt(Form1->EMaxCredit->Text);
ArrEnter[i].cur_occupy = 0;
ArrEnter[i].step_occupy = 0;















