Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Тысяча человек уже опубликовали продукты в Маркете. Опубликуй и ты свой!
5211845
123
5211845 2015.08.26 09:12 

Всех приветствую.

С первой проблемой я разобрался, теперь моя программка открывает существующий файл, считывает часть первой строки, создает новый и записывает туда считанную строку.

Теперь самое сложное, нужно выборочно скопировать из первого  файла строки во второй. Нужно сравнить первую строку со второй, если истина то записать, если ложь то сравнить вторую с третей и так далее до конца файла.

Изучаю документацию, но без наглядного образца не получается.

Прошу помочь
LRA
321
LRA 2015.08.26 10:57  

Для отладки в первый файл записал бы

11111

22222

22222

33333

44444

44444

55555

И другой вариант

11111

11111

.........

И еще

11111

11111

11111

Алгоритм такой:

Открыть оба файла

ПерваяСтрока = строка из файла    // Имена переменных (идентификаторы) можно русскими буквами. Удобно!

Цикл

  Вторая строка = строка из файла)  // Читаем очередную строку

  Alert(ПерваяСтрока + "   " + ВтораяСтрока)                //  ну это для наглядности

  Если(часть(ПерваяСтрока) == часть(Вторая строка))Запись в файл  // Сравниваем последнюю прочитанную строку с предшествующей и при равенстве записываем

  ПерваяСтрока = Вторая строка  // Первая строка устарела. Записываем на ее место последнюю прочитанную

До конца файла

Закрыть оба файла

Сумеете?

Только вряд ли надо плодить темы. И уберите пустые сообщения из прошлой темы

5211845
123
5211845 2015.08.26 14:19  

Пустые сообщения убрал, пытался вложить скрин, не получалось.  А эту тему  создал что бы обратили внимание, так как подумал что туда уже не отзоветесь. Алгоритм понятен. Технически описать сложновато.

Пытался разобраться с документацией по работе с файлами и строками, но  так и не смог понять какая функция прочитает мне нужные символы внутри строки. Везде указанно что та или иная функция читает с начала строки и до конца или до разделителя. А вот как реализовать чтобы функция прочитала скажем из строки с 10-того символа по 13 символ,  слово "down".

Спасибо.

Рустам
3604
Рустам 2015.08.26 16:27  
5211845
123
5211845 2015.08.26 18:42  
Спасибо, еще такой вопрос, для чтения строки использую вот такую функцию str =  FileReadString(file_handle1); считывает данные только до ближайшего разделителя. Всю строку не читает до конца. У меня тип файла csv. Как решить этот вопрос?
Рустам
3604
Рустам 2015.08.26 18:50  
в функции FileOpen укажите неправильный разделитель, который никогда не встречается в вашем тексте, тогда будет считывать до конца строки.
5211845
123
5211845 2015.08.26 19:11  

Благодарю, теперь читает всю строку целиком

5211845
123
5211845 2015.08.26 19:21  

Не могу понять как использовать StringFind. У меня вот такой цикл получился. Пытаюсь переписать строки в которых есть подстрока "Down". Переписывает все подряд.

Компилятор выдает предупреждение и ругается на   if (StringFind(str,"Down",1)); Вижу что чего-то не хватает, но не могу понять что.

while(!FileIsEnding(file_handle1))
    {
   
    str =  FileReadString(file_handle1);
    if (StringFind(str,"Down",1));
   
    {
         FileWrite(file_handle,str);
    }   
    }

Рустам
3604
Рустам 2015.08.26 19:32  

читайте внимательно описание функции

Возвращает номер позиции в строке, с которой начинается искомая подстрока, либо -1, если подстрока не найдена.

 и для вставки кода в сообщение форума есть кнопка  SRC

if (StringFind(str,"Down",1)>=0)
    { 
         FileWrite(file_handle,str);
    }

  и лишний ; еще

5211845
123
5211845 2015.08.26 19:42  

Вроде получилось, вот такой код получился

while(!FileIsEnding(file_handle1))
    {
   
    str =  FileReadString(file_handle1);
    x = (StringFind(str,"Down",1));
    if (x!=-1)
    {
    {
         FileWrite(file_handle,str);
    }
    }   
    }

5211845
123
5211845 2015.08.26 23:28  

Всем большое спасибо, за содействие. желаемого результата я добился. Теперь пытаюсь произвести вычисления. Каким образом можно извлечь из строки цену, чтобы потом вычесть из нее какую-то другую цену?

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий