⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resultgraphic.cpp

📁 石油公司网管系统优化系统软件源码,很有价值的.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        }

    }
    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 + -