Author Topic: Ввод текста с абзацами из файла. Помогите, пожалуйста!  (Read 2861 times)

0 Members and 1 Guest are viewing this topic.

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Доброго времени суток!
Подскажите, пожалуйста!

Есть текстовый файл в *.txt, в нем несколько абзацев.
Нужно скопировать ВЕСЬ текст из этого файла и вставить его в нужное поле по координатам.

Это нужно будет делать несколько раз - вставлять этот текст заданное число раз. Т.е. надо постоянно обнулять буфер после вставки этого текста...

Благодарю!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Для правильной работы файл tekst.txt должен быть в ANSI кодировке
Code: (clickermann) [Select]
$file = "tekst.txt"
for($i = 1, $i<TFCOUNT($file)+1)
   IF($i = 1)
      $buffer = TFREAD($file,$i)
   ELSE
      $buffer = STRCONCAT($buffer,char(13),char(10),TFREAD($file,$i))
   END_IF
end_cyc
TOCLIP($buffer) // вставляем в буфер весь текст из файла "tekst.txt"

HALT

Только я не пойму зачем "постоянно обнулять буфер после вставки этого текста..."?

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Большое спасибо!
Если можно, для чайников, напишите пояснения по строкам, помимо последней.  :)

Просто есть цикл, есть другой файл с логин-паролем. Надо будет входить под каждым логин-паролем и вставлять один текст в нужном месте.
« Last Edit: April 10, 2019, 01:56:57 PM by Veledar »

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Для правильной работы файл tekst.txt должен быть в ANSI кодировке

Что то у меня не получается, нули вставляет вместо текста. Кодировка правильная.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Неужели скопировать и вставить код в сообщение сложнее чем заморачиваться с фотографированием экрана. Не говоря уже что есть кнопка PrintScreen.

В коде я вижу какую то дурь с GOTO
Относительно вставки текста ничего сказать не могу.

Если текст один и тот же то его нужно считать и записать в переменную один раз до цикла.
"Просто есть цикл, есть другой файл с логин-паролем." что то я не вижу ничего похожего в коде.

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Неужели скопировать и вставить код в сообщение сложнее чем заморачиваться с фотографированием экрана. Не говоря уже что есть кнопка PrintScreen.

В коде я вижу какую то дурь с GOTO
Относительно вставки текста ничего сказать не могу.

Если текст один и тот же то его нужно считать и записать в переменную один раз до цикла.
"Просто есть цикл, есть другой файл с логин-паролем." что то я не вижу ничего похожего в коде.

Я пишу с мобильника, у компа нет выхода в интернет сейчас. Просто тестирую вставку текста и цикл. Полноценный скрипт буду писать на компе с интернетом.
С гоуту это я просто так привык блоки разделять, они не нужны конечно...

Код для текста вставил до начала цикла, все равно нули ставит почему то.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Разумные программисты блоки разделяют комментариями
Code: (clickermann) [Select]

// =====================


Прежде всего протесть как кликер считывает строку из файла

Вот вывод первой строки из файла в лог
Code: (clickermann) [Select]
$a = TFREAD("Текст.txt", 1)

LOGWRITE ($a)
LOGSHOW (1)
HALT

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Разумные программисты блоки разделяют комментариями
Code: (clickermann) [Select]

// =====================


Прежде всего протесть как кликер считывает строку из файла

Вот вывод первой строки из файла в лог
Code: (clickermann) [Select]
$a = TFREAD("Текст.txt", 1)

LOGWRITE ($a)
LOGSHOW (1)
HALT

Я не программист!  :)
ГоуТу мне как раз программист показал, мне понравилось. :)

Вывод первой строки тоже не сработал. Лог со временем только появляется и все.
В чем может быть проблема?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Я не программист!  :)
ГоуТу мне как раз программист показал, мне понравилось. :)

Вывод первой строки тоже не сработал. Лог со временем только появляется и все.
В чем может быть проблема?

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

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Текстовый файл должен лежать в пой же папке откуда загружен скрипт.
Ну и убедись, все таки, что текст не в юникоде.

Все! Работает, искренне благодарю!
Ошибка у меня была в размещении файла.
Файл изначально лежал в папке input (там у меня файл с логин-паролями лежит и нормально они считываются из него).

Еще раз благодарю!

Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Если текст один и тот же то его нужно считать и записать в переменную один раз до цикла.

Еще вопрос на будущее! Посложнее... Просто чтобы не делать три разных скрипта!
Если, например, у меня есть три разных текста в трех файлах. И для списка логин-паролей надо будет иногда один текст вставлять, иногда другой, иногда третий.

Например для первых трех логинов первый текст, потом два логина - второй текст, после четыре логина - третий текст.

Как быть с буфером по текстам?
Как вообще разные тексты связать с нужными логинами?
« Last Edit: April 10, 2019, 06:09:47 PM by Veledar »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Если текст один и тот же то его нужно считать и записать в переменную один раз до цикла.

Еще вопрос на будущее! Посложнее... Просто чтобы не делать три разных скрипта!
Если, например, у меня есть три разных текста в трех файлах. И для списка логин-паролей надо будет иногда один текст вставлять, иногда другой, иногда третий.

Например для первых трех логинов первый текст, потом два логина - второй текст, после четыре логина - третий текст.

Как быть с буфером по текстам?
Как вообще разные тексты связать с нужными логинами?


Code: (clickermann) [Select]
SUB(_To_Clip, $file) // подпрограмма в начале скрипта
   for($i = 1, $i<TFCOUNT($file)+1)
      IF($i = 1)
         $buffer = TFREAD($file,$i)
      ELSE
         $buffer = STRCONCAT($buffer,char(13),char(10),TFREAD($file,$i))
      END_IF
   end_cyc
END_SUB

_To_Clip("tekst 1.txt") // вызов подпрограммы
$buffer1 = $buffer
_To_Clip("tekst 2.txt") // вызов подпрограммы
$buffer2 = $buffer
_To_Clip("tekst 3.txt") // вызов подпрограммы
$buffer3 = $buffer



// далее по скрипту вставляет текст в буфер из нужной переменной
TOCLIP($buffer1) // вставляем текст из файла 1


TOCLIP($buffer2) // вставляем текст из файла 2


TOCLIP($buffer3) // вставляем текст из файла 3


Veledar

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Еще раз благодарю! :)