<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Запись в текстовый файл]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Запись в текстовый файл форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 11:28:10 +0300</pubDate>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26653/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_xcBAU7Wn" href="/user/2250/" bx-tooltip-user-id="2250">Иван Ру</a> написал:<br /><br />====quote====<br /> Николай &nbsp;Камынин &nbsp; написал:<br /><br />====quote====<br /> Иван Ру &nbsp; написал:<br />Есть открытый текстовый файл, скажем, длинной в 100 строк. <br />Необходимо дописать данные, скажем, в 79 строку (номер известен). Возможно ли такое средствами Lua, есть ли у кого пример реализации подобной функции?<br />=============<br /> Вашу задачу &nbsp;можно так:<br />1) Все записи делаем одинаковой длины, например 128 байт<br />2) Если запись короче 128 то добиваем ее либо пробелом либо нулями.<br />3) Если надо дописать, то ищем изменяемую запись , читаем ее, добавляем и пишем на свое место.<br /><br />=============<br />Возможно мы друг друга недопоняли. Записи я делаю в csv (текстовый) файл с разделителями в виде &quot;;&quot;. Затем я его читаю в эксель. По-сути надо добавить дополнительные элементы данных в отдельные строки, де-факто они всегда оказываются ближе к концу файла.<br />Кстати, попутный вопрос. Если у меня файл находится в открытом состоянии в режиме чтения-записи и его размер велик (скажем 100 мб.) -- отнимает ли это соответствующий объем оперативной памяти? Если да - как этого избежать? Только закрытием файла и повторным открытием для записи?<br />=============<br />память под файлы расходуется, но это не 100 мб и беспокоится не стоит.<br />Попробую объяснить про дозапись.<br />Есть два режима записи - бинарный и текстовый.<br />В текстовом инфа пишется в файл последовательно запись за записью . Каждая строка пишется в формате ASCIZ, т е признак конца строки - это ноль.<br />поэтому просто добавить в конец &nbsp;какой- либо, не последней, строки в файле &nbsp;невозможно, так как нет места для этого.<br />Поэтому я Вам предложил<br />сделать строки одинаковыми по длине - это ускорит поиск нужной строки<br />и создать место для дозаписи. Т е Вы создаете пустое место на диске и пишите в это место .<br />----------------------------<br />Если Вы пишите в файл лишь для передачи в Excel, то это можно делать через протокол Dynamic Data Exchange (DDE) &nbsp;сразу в Excel.<br />Но это требует знаний в написании DLL на СИ для Lua. <br />
			<i>15.09.2017 07:06:20, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26653/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26653/topic3057/</guid>
			<pubDate>Fri, 15 Sep 2017 07:06:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26652/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_X2yIcM0E" href="/user/1103/" bx-tooltip-user-id="1103">Imersio Arrigo</a> написал:<br /><br />====quote====<br /> Николай &nbsp;Камынин &nbsp; написал:<br />3) Если надо дописать, то ищем изменяемую запись , читаем ее, добавляем и пишем на свое место.<br /><br />=============<br />Ну так-то обычно все данные &nbsp;после места записи обрезаются. <br />Нельзя просто так взять и вставить запись внутрь файла ;)<br /><br />Отличным &nbsp;решением был бы например маппинг файла в память, но, боюсь на луа это не доступно.<br /><br />====quote====<br /> Иван Ру &nbsp; написал:<br />Если у меня файл находится в открытом состоянии в режиме чтения-записи и его размер велик (скажем 100 мб.) -- отнимает ли это соответствующий объем оперативной памяти?<br />=============<br />Нет, не отнимает.<br />=============<br />Если будете правильно писать то данные не будут обрезаться.<br />А вот память под файлы расходуется. т е &quot;отнимает&quot;<br />Более того, если Вы не делаете выгрузку, то данные будут в памяти а не на диске. <br />
			<i>15.09.2017 06:57:13, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26652/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26652/topic3057/</guid>
			<pubDate>Fri, 15 Sep 2017 06:57:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26651/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1xJyOyS5" href="/user/2250/" bx-tooltip-user-id="2250">Иван Ру</a> написал: <br />Затем я его читаю в эксель. <br />=============<br /><br />А если писать напрямую в excel?<br />Сам не пробовал, но вроде можно <noindex><a href="https://stackoverflow.com/questions/1565838/using-lua-for-working-with-excel" target="_blank" rel="nofollow">так</a></noindex> или <noindex><a href="http://xlsxwriterlua.readthedocs.io/index.html" target="_blank" rel="nofollow">так</a></noindex>. <br />
			<i>15.09.2017 06:39:03, vgi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26651/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26651/topic3057/</guid>
			<pubDate>Fri, 15 Sep 2017 06:39:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26643/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_fRf7xW4i" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a> написал:<br />3) Если надо дописать, то ищем изменяемую запись , читаем ее, добавляем и пишем на свое место.<br /><br />=============<br />Ну так-то обычно все данные &nbsp;после места записи обрезаются. <br />Нельзя просто так взять и вставить запись внутрь файла ;)<br /><br />Отличным &nbsp;решением был бы например маппинг файла в память, но, боюсь на луа это не доступно.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_9JRl2thU" href="/user/2250/" bx-tooltip-user-id="2250">Иван Ру</a> написал:<br />Если у меня файл находится в открытом состоянии в режиме чтения-записи и его размер велик (скажем 100 мб.) -- отнимает ли это соответствующий объем оперативной памяти?<br />=============<br />Нет, не отнимает. <br />
			<i>14.09.2017 19:05:26, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26643/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26643/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 19:05:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26642/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tH0CZBod" href="/user/62/" bx-tooltip-user-id="62">Николай  Камынин</a> написал:<br /><br />====quote====<br /> Иван Ру &nbsp; написал:<br />Есть открытый текстовый файл, скажем, длинной в 100 строк. <br />Необходимо дописать данные, скажем, в 79 строку (номер известен). Возможно ли такое средствами Lua, есть ли у кого пример реализации подобной функции?<br />=============<br /> Вашу задачу &nbsp;можно так:<br />1) Все записи делаем одинаковой длины, например 128 байт<br />2) Если запись короче 128 то добиваем ее либо пробелом либо нулями.<br />3) Если надо дописать, то ищем изменяемую запись , читаем ее, добавляем и пишем на свое место.<br /><br />=============<br />Возможно мы друг друга недопоняли. Записи я делаю в csv (текстовый) файл с разделителями в виде &quot;;&quot;. Затем я его читаю в эксель. По-сути надо добавить дополнительные элементы данных в отдельные строки, де-факто они всегда оказываются ближе к концу файла.<br />Кстати, попутный вопрос. Если у меня файл находится в открытом состоянии в режиме чтения-записи и его размер велик (скажем 100 мб.) -- отнимает ли это соответствующий объем оперативной памяти? Если да - как этого избежать? Только закрытием файла и повторным открытием для записи? <br />
			<i>14.09.2017 18:39:03, Иван Ру.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26642/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26642/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 18:39:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26635/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Qkkyy4D2" href="/user/2250/" bx-tooltip-user-id="2250">Иван Ру</a> написал:<br />Есть открытый текстовый файл, скажем, длинной в 100 строк. <br />Необходимо дописать данные, скажем, в 79 строку (номер известен). Возможно ли такое средствами Lua, есть ли у кого пример реализации подобной функции?<br />=============<br /> Вашу задачу &nbsp;можно так:<br />1) Все записи делаем одинаковой длины, например 128 байт<br />2) Если запись короче 128 то добиваем ее либо пробелом либо нулями.<br />3) Если надо дописать, то ищем изменяемую запись , читаем ее, добавляем и пишем на свое место.<br /> &nbsp; <br />
			<i>14.09.2017 15:02:27, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26635/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26635/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 15:02:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26631/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FfbYo04M" href="/user/1833/" bx-tooltip-user-id="1833">vgi</a> написал:<br />формате, загружать с помощью dofile, дополнять и снова сливать в файл.<br />=============<br />Тогда уж лучше/проще/удобнее прикрутить БД. Любую доступную.<br />Вот прямо в 100500 раз лучше будет. <br />
			<i>14.09.2017 13:19:26, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26631/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26631/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 13:19:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26630/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Насколько понял, событий не ооочень много и частота дописываний тоже не hft. <br />Может стоит пересмотреть процесс создания/записи файла? <br />Например периодически полностью пересоздавать его ( данные в памяти ).<br />Если не охота данные в памяти всё время держать, можно сохранять в не очень наглядном lua-формате, загружать с помощью dofile, дополнять и снова сливать в файл. <br />
			<i>14.09.2017 13:16:50, vgi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26630/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26630/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 13:16:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26629/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Тогда нельзя изменять файл &quot;посередине&quot; <br />
			<i>14.09.2017 12:52:48, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26629/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26629/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 12:52:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26626/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1lSNTbJO" href="/user/1833/" bx-tooltip-user-id="1833">vgi</a> написал:<br />Если требуется именно дописать, а не изменить, то для случая дописывания &nbsp;в конец &nbsp;строки самым простым представляется прочитать из файла, открытого как io.open( filename, &quot;r+&quot; ), N (=79) строк. Затем шагнуть назад file:seek( &quot;cur&quot;, -EOL ), где EOL = &quot;\n&quot;:len() - длина перевода на новую строку. А потом дописать с помощью file:write то, что Вам требуется.<br />Для случая дописывания &nbsp;не в конец &nbsp;строки придётся искать позицию иначе.<br /><br />Если файл создаётся периодически из того же кода, можно отдельно запоминать offset для file:seek нужного для дозаписи места.<br />=============<br />Дело обстоит так. Файл открыт постоянно в работе скрипта - в него записывается информация об особых событиях (несколько десятков за сессию), с течением времени дописывается инфа об изменении цены с момента события (до часа). Ну точнее хочу чтобы дописывалась, -- продумываю реализацию. Можно конечно записывать строку целиком через час, но в случае остановки скрипта или других проблем она будет утеряна целиком. &nbsp; <br />
			<i>14.09.2017 12:18:36, Иван Ру.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26626/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26626/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 12:18:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26620/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Верно, после дозаписи получается не красиво.<br />Выходит, проще, читая исходный файл, писать с дополнениями новый. <br />
			<i>14.09.2017 07:53:40, vgi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26620/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26620/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 07:53:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26619/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ага, только в этом случае все строки после 79й пропадут :)<br />поэтому нужно все, что ниже сначала вычитать в память, а потом перезаписать 79ю и все последующие строки <br />
			<i>14.09.2017 07:08:00, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26619/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26619/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 07:08:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26618/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если требуется именно дописать, а не изменить, то для случая дописывания <U>в конец</U> строки самым простым представляется прочитать из файла, открытого как io.open( filename, "r+" ), N (=79) строк. Затем шагнуть назад file:seek( "cur", -EOL ), где EOL = "\n":len() - длина перевода на новую строку. А потом дописать с помощью file:write то, что Вам требуется.<br />Для случая дописывания <U>не в конец</U> строки придётся искать позицию иначе.<br /><br />Если файл создаётся периодически из того же кода, можно отдельно запоминать offset для file:seek нужного для дозаписи места. <br />
			<i>14.09.2017 06:58:32, vgi.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26618/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26618/topic3057/</guid>
			<pubDate>Thu, 14 Sep 2017 06:58:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Запись в текстовый файл</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26617/topic3057/">Запись в текстовый файл</a></b> <i> Нужно дописать данные в определенное место файла. </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Есть открытый текстовый файл, скажем, длинной в 100 строк. <br />Необходимо дописать данные, скажем, в 79 строку (номер известен). Возможно ли такое средствами Lua, есть ли у кого пример реализации подобной функции? <br />
			<i>13.09.2017 23:56:30, Иван Ру.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26617/topic3057/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26617/topic3057/</guid>
			<pubDate>Wed, 13 Sep 2017 23:56:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
