Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 запись в файл/чтение из файла Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
shaman1244



Зарегистрирован: 08.12.2015
Сообщения: 19

СообщениеДобавлено: Вт Сен 13, 2016 11:14 pm Ответить с цитатой Вернуться к началу

Да, так работает!! Только если добавляется новая запись.
А если существующая запись дополняется и снизу дописывается новая строка (закрытие позиции и сразу переворот), вроде :

Было так

Код:

18.05.2016 19:05:06 | Long  || 2   ||| 92220 |||| 18.05.2016 19:05:19 ||||| 92130 |||||| -90    ||||||| -241.36
18.05.2016 19:05:19 | Short || -2  ||| 92100 ||||


Стало так

Код:

18.05.2016 19:05:06 | Long  || 2   ||| 92220 |||| 18.05.2016 19:05:19 ||||| 92130 |||||| -90    ||||||| -241.36
18.05.2016 19:05:19 | Short || -2  ||| 92100 |||| 18.05.2016 19:16:08 ||||| 92150 |||||| -50    ||||||| -136.66
18.05.2016 19:16:08 | Long  || 2   ||| 92160 ||||


То начинаются глюки - отправка имейла каждую секунду, т.к. видимо постоянно срабатывает условие. И ини файл начинает выглядеть так:

Код:

[RIM6]
prev_TT=18.05.2016 19:05:19 | Short || -2
last_TT=18.05.2016 19:16:08 | Long  || 2


Видимо это какой-то геморойный вариант.

Как можно при изменении файла отправлять на мыло 2 его последние строки?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Сен 14, 2016 6:13 pm Ответить с цитатой Вернуться к началу

А может Ами обновить?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Сен 14, 2016 8:59 pm Ответить с цитатой Вернуться к началу

А... Вон оно че. Понял. Тот AFL код читает только последнюю строку. Поэтому когда обновляется последняя и сразу добавляется еще одна получается вот такой ini.

Пробуй так

Код:

email=0;
if(Name() == "RIM6")
{
  f_LT_1 = fopen(logs+"LOG_TRADES_1.TXT", "r");
  if(f_LT_1 )
  {
    while(!feof(f_LT_1 ))
    {
      TT_0 = Nz(LT_1);
      LT_1 = fgets(f_LT_1);
    }
    fclose(f_LT_1 );
  }
  LT_LAST_1=AS_READ_PARAM_STR("LT_1", Name() , "last_TT ");
  if(LT_LAST_1 != LT_1)
  {
    LT_LAST_1 = StrTrim(LT_LAST_1, "", 3);
    email=1;
    AS_WRITE_STRING("LT_1",  Name(), "prev_TT ", TT_0);
    AS_WRITE_STRING("LT_1",  Name(), "last_TT ", LT_1);
   
    AlertIf(email==1, "EMAIL", TT_0 + "\n" + TT_1, 0);
    email=0;
  }
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
shaman1244



Зарегистрирован: 08.12.2015
Сообщения: 19

СообщениеДобавлено: Ср Сен 14, 2016 10:02 pm Ответить с цитатой Вернуться к началу

Код:

TT_0 = Nz(LT_1);

А как LT_1 инициализировать?

При объявлении LT_1 на на тип ругается, пробовал и текст и ноль
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Сен 14, 2016 11:02 pm Ответить с цитатой Вернуться к началу

А так?
Код:

email=0;
TT_0 = LT_1 = "";
if(Name() == "RIM6")
{
  f_LT_1 = fopen(logs+"LOG_TRADES_1.TXT", "r");
  if(f_LT_1 )
  {
    while(!feof(f_LT_1 ))
    {
      TT_0 = LT_1;
      LT_1 = fgets(f_LT_1);
    }
    fclose(f_LT_1 );
  }
  LT_LAST_1=AS_READ_PARAM_STR("LT_1", Name() , "last_TT ");
  if(LT_LAST_1 != LT_1)
  {
    LT_LAST_1 = StrTrim(LT_LAST_1, "", 3);
    email=1;
    AS_WRITE_STRING("LT_1",  Name(), "prev_TT ", TT_0);
    AS_WRITE_STRING("LT_1",  Name(), "last_TT ", LT_1);
   
    AlertIf(email==1, "EMAIL", TT_0 + "\n" + TT_1, 0);
    email=0;
  }
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
shaman1244



Зарегистрирован: 08.12.2015
Сообщения: 19

СообщениеДобавлено: Ср Сен 14, 2016 11:33 pm Ответить с цитатой Вернуться к началу

Так ини Файл принял правильный вид. Но постоянно срабатывает условие отправки имейла, если последняя строка дополняется и новая добавляется одновременно
Посмотреть профиль Отправить личное сообщение
shaman1244



Зарегистрирован: 08.12.2015
Сообщения: 19

СообщениеДобавлено: Ср Сен 14, 2016 11:40 pm Ответить с цитатой Вернуться к началу

Думаю проще будет читать, запоминать три последних строки и слать их на имейл при редактирования файла, отслеживать редактирование по времени, Ами вроде может эту инфу снимать. Сейчас подумаю как написать это
Посмотреть профиль Отправить личное сообщение
shaman1244



Зарегистрирован: 08.12.2015
Сообщения: 19

СообщениеДобавлено: Чт Сен 15, 2016 1:04 am Ответить с цитатой Вернуться к началу

Так работает

Код:

email=0;
LT_2 = LT_3 = LT_1 = "";

if(Name() == "RIM6")
{
  f_LT_1 = fopen(logs+"LOG_TRADES_1.TXT", "r");
  if(f_LT_1 )
  {
    while(!feof(f_LT_1 ))
    {
      LT_3 = LT_2;
      LT_2 = LT_1;
      LT_1 = fgets(f_LT_1 );
    }
    fclose(f_LT_1 );
  }

r_date=NumToStr(fgetstatus( logs+"LOG_TRADES_1.TXT", 1, 3 ));
r_time=NumToStr(fgetstatus( logs+"LOG_TRADES_1.TXT", 1, 4 ));
Rewrite_DateTime = r_date + r_time;
Rewrite_DateTime_Prev = AS_READ_PARAM_STR("Last_Write_1", Name() , "Rewrite_DateTime_Prev");

if(Rewrite_DateTime_Prev != Rewrite_DateTime)
   {
    email=1;
    AlertIf(email==1, "EMAIL", LT_3 + "\n" + LT_2 + "\n" + LT_1 ,0,flags = 8);
    email=0;
    AS_WRITE_STRING("Last_Write_1", Name() , "Rewrite_DateTime_Prev", Rewrite_DateTime);
   }
}
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen