📄 resultgraphic.cpp
字号:
}
}
File=new TFileStream(FileName,fmOpenRead|fmShareExclusive);
__int64 Position;
Position=File->Size;
int TempInt;
char *str;
double TempDouble;
WellUnit *Well,*CurrentWell;
//读取布局优化结果
File->Read(&TempInt,sizeof(int));
str=(char*)new char[TempInt+1];
File->Read(str,TempInt);
str[TempInt]=0;
Head->No=(AnsiString)str;
delete str;
File->Read(&TempInt,sizeof(int));
if(TempInt)
{
Head->Fixed=true;
}
else
{
Head->Fixed=false;
}
File->Read(&TempDouble,sizeof(double));
File->Read(&TempDouble,sizeof(double));
Head->Next=0;
Head->Sub=0;
Head->Well=0;
CurrentHead=Head;
bool SubH;
while(File->Position<Position)
{
File->Read(&TempInt,sizeof(int));
switch(TempInt)
{
case 0:
Well=(WellUnit*) new WellUnit;
File->Read(&TempInt,sizeof(int));
str=(char*) new char[TempInt+1];
File->Read(str,TempInt);
str[TempInt]=0;
Well->No=(AnsiString)str;
delete str;
if(SubH)
{
Well->Next=SubHead->Well;
SubHead->Well=Well;
}
else
{
Well->Next=CurrentHead->Well;
CurrentHead->Well=Well;
}
break;
case 1:
TempHead=(WellHead*)new WellHead;
File->Read(&TempInt,sizeof(int));
str=(char*)new char[TempInt+1];
File->Read(str,TempInt);
str[TempInt]=0;
TempHead->No=(AnsiString)str;
delete str;
TempHead->Sub=0;
TempHead->Well=0;
TempHead->Next=SubHead;
SubHead=TempHead;
CurrentHead->Sub=TempHead;
SubH==true;
break;
case 2:
TempHead=(WellHead*)new WellHead;
File->Read(&TempInt,sizeof(int));
str=(char*)new char[TempInt+1];
File->Read(str,TempInt);
str[TempInt]=0;
TempHead->No=(AnsiString)str;
delete str;
File->Read(&TempInt,sizeof(int));
if(TempInt)
{
TempHead->Fixed=true;
}
else
{
TempHead->Fixed=false;
}
TempHead->Next=0;
TempHead->Sub=0;
TempHead->Well=0;
SubHead=0;
CurrentHead->Next=TempHead;
CurrentHead=TempHead;
SubH=false;
break;
case 3:
TempHead=(WellHead*)new WellHead;
File->Read(&TempInt,sizeof(int));
str=(char*)new char[TempInt+1];
File->Read(str,TempInt);
str[TempInt]=0;
TempHead->No=(AnsiString)str;
delete str;
File->Read(&TempInt,sizeof(int));
if(TempInt)
{
TempHead->Fixed=true;
}
else
{
TempHead->Fixed=false;
}
TempHead->Next=0;
TempHead->Sub=0;
TempHead->Well=0;
SubHead=0;
Head->Sub=TempHead;
CurrentHead=TempHead;
break;
}
}
delete File;
ADOResult->TableName=Station;
ADOResult->CursorLocation=clUseServer;
ADOResult->CursorType=ctKeyset;
ADOResult->TableDirect=true;
ADOResult->IndexName="PrimaryKey";
ADOResult->Open();
ADOWell->TableName="Well";
ADOWell->CursorLocation=clUseServer;
ADOWell->CursorType=ctKeyset;
ADOWell->TableDirect=true;
ADOWell->IndexName="PrimaryKey";
ADOWell->Open();
if(ADOResult->Seek(Variant(Head->No),soFirstEQ))
{
Head->X=ADOResult->FieldByName("横坐标")->AsFloat;
Head->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
Head->Height=ADOResult->FieldByName("高程")->AsFloat;
}
CurrentHead=Head->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
if(ADOResult->Seek(Variant(TempHead->No),soFirstEQ))
{
TempHead->X=ADOResult->FieldByName("横坐标")->AsFloat;
TempHead->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
TempHead->Height=ADOResult->FieldByName("高程")->AsFloat;
}
Well=TempHead->Well;
while(Well!=0)
{
if(ADOWell->Seek(Variant(Well->No),soFirstEQ))
{
Well->X=ADOWell->FieldByName("横坐标")->AsFloat;
Well->Y=ADOWell->FieldByName("纵坐标")->AsFloat;
Well->Height=ADOWell->FieldByName("高程")->AsFloat;
}
Well=Well->Next;
}
TempHead=TempHead->Sub;
}
if(ADOResult->Seek(Variant(CurrentHead->No),soFirstEQ))
{
CurrentHead->X=ADOResult->FieldByName("横坐标")->AsFloat;
CurrentHead->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
CurrentHead->Height=ADOResult->FieldByName("高程")->AsFloat;
}
Well=CurrentHead->Well;
while(Well!=0)
{
if(ADOWell->Seek(Variant(Well->No),soFirstEQ))
{
Well->X=ADOWell->FieldByName("横坐标")->AsFloat;
Well->Y=ADOWell->FieldByName("纵坐标")->AsFloat;
Well->Height=ADOWell->FieldByName("高程")->AsFloat;
}
Well=Well->Next;
}
CurrentHead=CurrentHead->Next;
}
CurrentHead=Head->Sub;
if(CurrentHead!=0)
{
if(ADOResult->Seek(Variant(CurrentHead->No),soFirstEQ))
{
CurrentHead->X=ADOResult->FieldByName("横坐标")->AsFloat;
CurrentHead->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
CurrentHead->Height=ADOResult->FieldByName("高程")->AsFloat;
}
CurrentHead=CurrentHead->Next;
while(CurrentHead!=0)
{
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
if(ADOResult->Seek(Variant(TempHead->No),soFirstEQ))
{
TempHead->X=ADOResult->FieldByName("横坐标")->AsFloat;
TempHead->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
TempHead->Height=ADOResult->FieldByName("高程")->AsFloat;
}
Well=TempHead->Well;
while(Well!=0)
{
if(ADOWell->Seek(Variant(Well->No),soFirstEQ))
{
Well->X=ADOWell->FieldByName("横坐标")->AsFloat;
Well->Y=ADOWell->FieldByName("纵坐标")->AsFloat;
Well->Height=ADOWell->FieldByName("高程")->AsFloat;
}
Well=Well->Next;
}
TempHead=TempHead->Sub;
}
if(ADOResult->Seek(Variant(CurrentHead->No),soFirstEQ))
{
CurrentHead->X=ADOResult->FieldByName("横坐标")->AsFloat;
CurrentHead->Y=ADOResult->FieldByName("纵坐标")->AsFloat;
CurrentHead->Height=ADOResult->FieldByName("高程")->AsFloat;
}
Well=CurrentHead->Well;
while(Well!=0)
{
if(ADOWell->Seek(Variant(Well->No),soFirstEQ))
{
Well->X=ADOWell->FieldByName("横坐标")->AsFloat;
Well->Y=ADOWell->FieldByName("纵坐标")->AsFloat;
Well->Height=ADOWell->FieldByName("高程")->AsFloat;
}
Well=Well->Next;
}
CurrentHead=CurrentHead->Next;
}
}
ADOResult->Close();
ADOWell->Close();
CurrentHead=Head->Next;
x_min=x_max=Head->X;
y_min=y_max=Head->Y;
while(CurrentHead!=0)
{
if(CurrentHead->X<x_min)
{
x_min=CurrentHead->X;
}
if(CurrentHead->X>x_max)
{
x_max=CurrentHead->X;
}
if(CurrentHead->Y<y_min)
{
y_min=CurrentHead->Y;
}
if(CurrentHead->Y>y_max)
{
y_max=CurrentHead->Y;
}
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
if(TempHead->X<x_min)
{
x_min=TempHead->X;
}
if(TempHead->X>x_max)
{
x_max=TempHead->X;
}
if(TempHead->Y<y_min)
{
y_min=TempHead->Y;
}
if(TempHead->Y>y_max)
{
y_max=TempHead->Y;
}
Well=TempHead->Well;
while(Well!=0)
{
if(Well->X<x_min)
{
x_min=Well->X;
}
if(Well->X>x_max)
{
x_max=Well->X;
}
if(Well->Y<y_min)
{
y_min=Well->Y;
}
if(Well->Y>y_max)
{
y_max=Well->Y;
}
Well=Well->Next;
}
TempHead=TempHead->Sub;
}
Well=CurrentHead->Well;
while(Well!=0)
{
if(Well->X<x_min)
{
x_min=Well->X;
}
if(Well->X>x_max)
{
x_max=Well->X;
}
if(Well->Y<y_min)
{
y_min=Well->Y;
}
if(Well->Y>y_max)
{
y_max=Well->Y;
}
Well=Well->Next;
}
CurrentHead=CurrentHead->Next;
}
CurrentHead=Head->Sub;
if(CurrentHead!=0)
{
if(CurrentHead->X<x_min)
{
x_min=CurrentHead->X;
}
if(CurrentHead->X>x_max)
{
x_max=CurrentHead->X;
}
if(CurrentHead->Y<y_min)
{
y_min=CurrentHead->Y;
}
if(CurrentHead->Y>y_max)
{
y_max=CurrentHead->Y;
}
CurrentHead=CurrentHead->Next;
while(CurrentHead!=0)
{
if(CurrentHead->X<x_min)
{
x_min=CurrentHead->X;
}
if(CurrentHead->X>x_max)
{
x_max=CurrentHead->X;
}
if(CurrentHead->Y<y_min)
{
y_min=CurrentHead->Y;
}
if(CurrentHead->Y>y_max)
{
y_max=CurrentHead->Y;
}
TempHead=CurrentHead->Sub;
while(TempHead!=0)
{
if(TempHead->X<x_min)
{
x_min=TempHead->X;
}
if(TempHead->X>x_max)
{
x_max=TempHead->X;
}
if(TempHead->Y<y_min)
{
y_min=TempHead->Y;
}
if(TempHead->Y>y_max)
{
y_max=TempHead->Y;
}
Well=TempHead->Well;
while(Well!=0)
{
if(Well->X<x_min)
{
x_min=Well->X;
}
if(Well->X>x_max)
{
x_max=Well->X;
}
if(Well->Y<y_min)
{
y_min=Well->Y;
}
if(Well->Y>y_max)
{
y_max=Well->Y;
}
Well=Well->Next;
}
TempHead=TempHead->Sub;
}
Well=CurrentHead->Well;
while(Well!=0)
{
if(Well->X<x_min)
{
x_min=Well->X;
}
if(Well->X>x_max)
{
x_max=Well->X;
}
if(Well->Y<y_min)
{
y_min=Well->Y;
}
if(Well->Y>y_max)
{
y_max=Well->Y;
}
Well=Well->Next;
}
CurrentHead=CurrentHead->Next;
}
}
Draw();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -