Advertisement
Guest User

Untitled

a guest
Oct 16th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.93 KB | None | 0 0
  1. //---------------------------------------------------------------------------
  2.  
  3. #pragma hdrstop
  4.  
  5. #include "DataProgram.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8.  
  9. TDataProgram::TDataProgram()
  10. {
  11.     Memos = new TStringList;
  12.     Bitmaps = new TStringList;
  13.  
  14. }
  15. TDataProgram::~TDataProgram()
  16. {
  17. } //zdefiniowany konstruktor i destruktor klasy TDataprogram
  18. //----------------------------------------------------------------------------
  19. String TDataProgram::SetColSize(int Cols, TStringGrid *Grid)
  20. {
  21.     String temp = "";
  22.     for (int i= 0; i < Cols; i++)
  23.     {
  24.      temp = temp+IntToStr(Grid->ColWidths[i])+ "+";
  25.     }
  26.     temp.Delete(temp.Length(), 1);
  27.     return temp;
  28. }
  29. //----------------------------------------------------------------------------
  30. void TDataProgram::GetColSize(String Text, int Cols, TStringGrid *Grid)
  31. {
  32.     int Cx;
  33.     for (int i = 0; i < Cols; i++)
  34.     {
  35.        int x = Text.LastDelimiter("+");
  36.        try{Cx = (Text.SubString(x+1,4)).ToInt();}catch(...){Cx=60;}
  37.        Grid->ColWidths[Cols - i - 1] = Cx;
  38.        Text.Delete(x,4);
  39.     }
  40. }
  41. //----------------------------------------------------------------------------
  42. void TDataProgram::SaveToFile(String FileName, TStringGrid *Grid)
  43. {
  44.     TStringList *List = new TStringList;
  45.     String temp1 = "", temp2;
  46.     for (int i=0; i< Grid->RowCount; i++)
  47.     {
  48.        for (int j = 0; j< Grid->ColCount; j++)
  49.        {
  50.           if (Grid->Cells[j][i]. IsEmpty())temp2 = "[Null]";
  51.           else temp2 = Grid->Cells[j][i];
  52.           temp1 = temp1+temp2+"+";
  53.  
  54.        }
  55.      temp1.Delete(temp1.Length(), 1);
  56.      List->Add(temp1);
  57.      temp1 = "";
  58.     }
  59.     List->Add("[Memory Section]");
  60.     for (int i = 0; i < Memos->Count; i++)
  61.      {
  62.         List->Add(Memos->Strings[i]);
  63.      }
  64.      for (int i = 0; i < Bitmaps->Count; i++)
  65.      {
  66.         List->Add(Bitmaps->Strings[i]);
  67.      }
  68.      List->Add(SetColSize(Grid->ColCount, Grid));
  69.      List->SaveToFile(FileName);
  70.      List->Free();
  71. }
  72. void TDataProgram::LoadFromFile(String FileName, TStringGrid *Grid)
  73. {
  74.     TStringList *List = new TStringList;
  75.     List->LoadFromFile(FileName);
  76.     int x = CalcColumns(List->Strings[0]);
  77.     Grid->ColCount = x;
  78.     Grid->RowCount = CalcLines(List);
  79.     GetColSize(List->Strings[List->Count-1],x,Grid);
  80.     String temp;
  81.     for (int i=0; i < List->Count-1; i++)
  82.     {
  83.       if(!GetMemoSection(List->Strings[i]))
  84.       {
  85.           for (int j = 0; j<x; j++)
  86.           {
  87.              int y = List->Strings[i].LastDelimiter("+");
  88.              temp = List->Strings[i].SubString(y+1, 1000);
  89.              if(temp == "[Null]")temp=="";
  90.              Grid->Cells[x-j-1][i] = temp;
  91.              List->Strings[i] = List->Strings[i].Delete(y,1000);
  92.           }
  93.  
  94.       }
  95.      else
  96.       {
  97.          if(List->Strings[i].SubString(1,6) == "[Memory]")
  98.          Memos->Add(List->Strings[i]);
  99.          if(List->Strings[i].SubString(1,9) == "[Bitmaps]")
  100.          Bitmaps->Add(List->Strings[i]);
  101.       }
  102.  
  103.     }
  104.     Bitmaps->SaveToFile("Output/Bitmapinformation.fib");
  105.     List->Free();
  106. }
  107. //---------------------------------------------------------------------------
  108. int TDataProgram::CalcColumns(String Text)
  109. {
  110.    int x = 0;
  111.    for (int i = 0; i < Text.Length(); i++)
  112.    {
  113.       x = (Text.SubString(i,1) == "+")? x+1:x;
  114.    }
  115.    return x+1;
  116. }
  117. int TDataProgram::CalcLines(TStringList *List)
  118. {
  119.    for (int i = 0; i < List->Count; i++)
  120.    {
  121.       if (List->Strings[i] == "[Memory Section]")
  122.       return i;
  123.    }
  124.    return List->Count-1;
  125. }
  126. //---------------------------------------------------------------------------
  127. bool TDataProgram::GetMemoSection(String Text)
  128. {
  129.    bool test = (Text.SubString(1,6) == "Memory"||
  130.                  Text.SubString(1,9) == "[Bitmaps]"||
  131.                  Text.SubString(1,14) == "[Memory Section]") ?true:false;
  132.     return test;
  133. }
  134. //---------------------------------------------------------------------------
  135. void TDataProgram::SetMemo (String Text, int number)
  136. {
  137.     String temp = "[Null]"+IntToStr(number)+"+";
  138.     int length = temp.Length();
  139.     bool test = false;
  140.     for (int i = 0 ; i < Memos->Count; i++)
  141.     {
  142.        if (Memos->Strings[i].SubString(1,length)==temp)
  143.        {
  144.           Memos->Strings[i] = temp+Text;
  145.           test = true;
  146.           break;
  147.        }
  148.     }
  149.   if (!test)Memos->Add(temp+Text);
  150. }
  151. //-----------------------------------------------------------------------------
  152. int TDataProgram::LinesMemo (String Text)
  153. {
  154.     int x = 0;
  155.     for (int i = 0; i < Text.Length(); i++)
  156.     {
  157.        x = (Text.SubString(i,1) == "|") ?x=1:x;
  158.     }
  159.     return x;
  160. }
  161. memo TDataProgram::GetMemo (int number)
  162. {
  163.    String temp;
  164.    memo go;
  165.    int z;
  166.    for (int i = 0; i < Memos->Count; i++)
  167.    {
  168.       temp = Memos->Strings[i].SubString(7,1000);
  169.       int x = temp.LastDelimiter("+");
  170.       try{z = (temp.SubString(0,x-1)).ToInt();}catch(...){z=0;}
  171.       if (z == number)
  172.       {
  173.          temp = temp.Delete(1,x);
  174.          break;
  175.       }
  176.  
  177.  
  178.    }
  179.    if (z==number)
  180.    {
  181.       note = true;
  182.       MemoCount = LinesMemo(temp);
  183.       for (int i = 0; i < MemoCount; i++)
  184.       {
  185.           int x = temp.LastDelimiter("|");
  186.           go.A[i] = (temp.SubString(x+1, 1000));
  187.           temp = temp.Delete(x,1000);
  188.       }
  189.  
  190.    }
  191.    else note = false;
  192.    return go;
  193.  
  194. }
  195. //----------------------------------------------------------------------------
  196. void TDataProgram::SetBitmap(String FileName, int number)
  197. {
  198.    String temp = "[Bitmaps]"+ IntToStr(number)+ "+";
  199.    int length = temp.Length();
  200.    bool test = false;
  201.    for (int i = 0; i < Bitmaps->Count; i++)
  202.    {
  203.       if (Bitmaps->Strings[i].SubString(1,length) == temp)
  204.       {
  205.          Bitmaps->Strings[i] = temp+ FileName;
  206.          test = true;
  207.          break;
  208.       }
  209.    }
  210.    if(!test)Bitmaps->Add(temp+FileName);
  211. }
  212. String TDataProgram::GetBitmap (int number)
  213. {
  214.    String temp = "";
  215.    int z;
  216.    for (int i = 0; i<Bitmaps->Count; i++)
  217.    {
  218.       temp = Bitmaps->Strings[i].SubString(10,300);
  219.       int x = temp.LastDelimiter("+");
  220.       try{z= (temp.SubString(1,x-1)).ToInt();}catch(...){z=0;}
  221.       if (z==number)
  222.       {
  223.           temp = temp.Delete(1,x);
  224.           return temp;
  225.       }
  226.    }
  227.   return temp;
  228. }
  229. //----------------------------------------------------------------------------
  230. void TDataProgram::RefreshDataProgram(void)
  231. {
  232.    Bitmaps->Clear();
  233.    Memos->Clear();
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement