Не могу оптимизировать!!!
int i,j;
AnsiString NLF;
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+Label3->Caption;
StringGrid1->Cols->SaveToFile(NLF);
}
i=0;
while (i < Memo2->Lines->Count)
{
if(Memo2->Lines->Strings == MaskEdit2 -> Text)
{
Label5 -> Caption = "Данные по этому году уже занесены, для просмотра или корректировки используйте возможность <<Загрузить данные ... года>>";
RazrNewGodi = False;
}
i++;
}
if (StrToInt(DateTimeToStr(Date()).Delete(1,6))<StrToInt(MaskEdit2->Text))
{
RazrNewGod = False;
Label5 -> Caption = "Нельзя внести данные до наступления увказанного вами года";
}
if (RazrNewGod == True && RazrNewGodi == True)
{
for (i=0;i<13;i++)
for (j=0;j<21;j++)
{
StringGrid1->Cells[j] = "";
}
for (i=1;i<13;i++)
StringGrid1->Cells[0]= i;
//StringGrid1->Rows[5]->Text = "-----------------------";
for (i=0;i<13;i++)
StringGrid1->Cells[5] = "-----------------------------";
StringGrid1->Cols[0]->LoadFromFile("ColDDR");
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+(MaskEdit2 -> Text);
StringGrid1->Cols->SaveToFile(NLF);
}
}
а вообще сложно понять что куда, понимания назначения переменных :))
хоть бы комменты какие были
int i,j;
AnsiString NLF;
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+Label3->Caption;
StringGrid1->Cols->SaveToFile(NLF);
}
i=0;
while (i < Memo2->Lines->Count)
{
if(Memo2->Lines->Strings == MaskEdit2 -> Text)
{
Label5 -> Caption = "Данные по этому году уже занесены, для просмотра или корректировки используйте возможность <<Загрузить данные ... года>>";
RazrNewGodi = False;
}
i++;
}
if (StrToInt(DateTimeToStr(Date()).Delete(1,6))<StrToInt(MaskEdit2->Text))
{
RazrNewGod = False;
Label5 -> Caption = "Нельзя внести данные до наступления увказанного вами года";
}
if (RazrNewGod == True && RazrNewGodi == True)
{
for (i=1;i<13;i++)
{
for (j=1;j<21;j++)
{
StringGrid1->Cells[j] = "";
}
StringGrid1->Cells[0]= i;
StringGrid1->Cells[5] = "-----------------------------";
}
StringGrid1->Cols[0]->LoadFromFile("ColDDR");
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+(MaskEdit2 -> Text);
StringGrid1->Cols->SaveToFile(NLF);
}
}
а дальше что будет?
Код рабочий?? Проц не грузит? Время выполнения не критично?? Тогда ..если не можешь сам оптимизировать свой код - оставь как есть..
Была бы какая-то типовая задача - одно дело, а тут.. легче заново его переписать, чем в твоем разбираться.. Даже комменты не написал..
Rezus666, я не смеюсь. И не надо мне объяснять что такое работа :) и про 12 часов в день, и про 20 тоже ) ну да не будем спорить. ты бы лёг, выспался 1 ночь, а с утра бы на свежую голову глянул. и было бы всё гут.
ЗЫ: цикл while можно на for заменить, заодно и строчек несколько сэкономит. не знаю как тебе, но мне for приятнее было бы видеть в таком коде... имхо.
ЗЗЫ: и прислушайся к совету выше ;)
а вообще сложно понять что куда, понимания назначения переменных :))
хоть бы комменты какие были
int i,j;
AnsiString NLF;
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+Label3->Caption;
StringGrid1->Cols->SaveToFile(NLF);
}
i=0;
while (i < Memo2->Lines->Count)
{
if(Memo2->Lines->Strings == MaskEdit2 -> Text)
{
Label5 -> Caption = "Данные по этому году уже занесены, для просмотра или корректировки используйте возможность <<Загрузить данные ... года>>";
RazrNewGodi = False;
}
i++;
}
if (StrToInt(DateTimeToStr(Date()).Delete(1,6))<StrToInt(MaskEdit2->Text))
{
RazrNewGod = False;
Label5 -> Caption = "Нельзя внести данные до наступления увказанного вами года";
}
if (RazrNewGod == True && RazrNewGodi == True)
{
for (i=1;i<13;i++)
{
for (j=1;j<21;j++)
{
StringGrid1->Cells[j] = "";
}
StringGrid1->Cells[0]= i;
StringGrid1->Cells[5] = "-----------------------------";
}
StringGrid1->Cols[0]->LoadFromFile("ColDDR");
for (i=1;i<13;i++)
{
NLF = IntToStr(i)+(MaskEdit2 -> Text);
StringGrid1->Cols->SaveToFile(NLF);
}
}
Мне кажется, что лучшей оптимизацией будет создание нормальной БД, а не ещё раз создавать велосипед, и гонять данные с грида в файл…
А почему меня цитировать???
Конечно лучше БД.
А если человеку нужно, например, быстро сделать и он не знает как работать с БД?
Кроме того нужен, я так понимаю, сервак , который будет твои запросы обрабатывать и непосредственно сохранять и читать из базы :)) а его (сервак) еще надо выбрать - вот еще один аспект, который нужно изучить.
Хотя с базой данных - это вариант получше, тут я согласен.
Но - кому что.
Я б например вообще на нете писал, там всё гораздо проще, и работа с базой и дизайн и вообще.
while (i < Memo2->Lines->Count)
{
..
i++;
}
можно заменить
i=-1;
while (i++ < Memo2->Lines->Count)
{
..
}
StrToInt(DateTimeToStr(Date()).Delete(1,6))
- это можно рассчитать один раз при запуске программы
for (i=0;i<13;i++) - у тебя известно, сколько циклов
попробуй
StringGrid1->Cells[0][0] = "";
StringGrid1->Cells[0][1] = "";
StringGrid1->Cells[0][2] = "";
StringGrid1->Cells[0][3] = "";
...
for (i=1;i<13;i++)
StringGrid1->Cells[0]= i;
можно без этого цикла, заполняй i тамже где и очищаешь StringGrid
...
вот не пойму... это у тебя при каждом нажатии клавиши выполняется?
если да - то это неверный подход..
даже перечисленное выше не даст нужного "ускорения"
нужно раскидывать код по разным событиям
while (i < Memo2->Lines->Count)
{
..
i++;
}
можно заменить
i=-1;
while (i++ < Memo2->Lines->Count)
{
..
}
А не проще использовать for ?
..
Я б например вообще на нете писал, там всё гораздо проще, и работа с базой и дизайн и вообще.
Сильно сказано!! Особенно про дизайн!! :D
Такой велосипед каждый программист когда нибудь, да написал в своей жизни ( и не один), и ничего, живой...
Не буду вдаваться в советы по проектированию, уже прозвучали оринтировки. Скажу конкретно по коду:
1. для проверки наличия года цикл не нужен, используй IndexOf списка строк.
2. не надо каждый раз вычислять год (имхо, да и делаешь ты это извратно, см. что-то вроде Year), достаточно сохранить это значение во время запуска;
не думаю что пользователь продержится в одном сеансе твоего приложения больше года;)
3. попробуй для очистки использовать Text списков строк (например Cols->Text), проверить не могу
Не удержусь от замечания по оформлению: выделяй логически обособленные куски кода в отдельные ф-ции.
ЗЫ: по поводу определиться с сервером, то не надо прикалываться над человеком;), Rezus666 выбирай любой
мда... дизайн там и вправду простой-простой, как грабли ;)
не думаю что пользователь продержится в одном сеансе твоего приложения больше года
Вполне может - если запустит программу в конце декабря, то закончит в начале январа прошлого года :D