Работа с файлами. Поиск в строке ключевого слова и сравнение с другой сровой

 

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

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

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

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

Прошу помочь
 

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

11111

22222

22222

33333

44444

44444

55555

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

11111

11111

.........

И еще

11111

11111

11111

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

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

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

Цикл

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

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

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

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

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

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

Сумеете?

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

 

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

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

Спасибо.

 
 
Спасибо, еще такой вопрос, для чтения строки использую вот такую функцию str =  FileReadString(file_handle1); считывает данные только до ближайшего разделителя. Всю строку не читает до конца. У меня тип файла csv. Как решить этот вопрос?
 
в функции FileOpen укажите неправильный разделитель, который никогда не встречается в вашем тексте, тогда будет считывать до конца строки.
 

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

 

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

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

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

 

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

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

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

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

  и лишний ; еще

 

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

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

 

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

Причина обращения: