<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Как в НЕтекстовом файле заменить строку?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8673&amp;type=atom" />
	<updated>2013-09-18T18:57:45Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8673</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75462#p75462" />
			<content type="html"><![CDATA[<p>Да, собственно и не важно.&nbsp; Постараюсь разобраться и в 27, как время появится. Спасибо1</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T18:57:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75462#p75462</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75459#p75459" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Next пишет:</cite><blockquote><p>Ну, я вычленяя нужный фрагмент тупо использовал знакомые<br />StringGetPos<br />StrLen<br />StringTrimRight и т.п,<br /> где, кстати тоже несколько удобнее представление всегда в виде трёх знаков.</p></blockquote></div><p>Ничего непонял, можно это всё на примере.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T12:17:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75459#p75459</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75458#p75458" />
			<content type="html"><![CDATA[<p>Кстати, после FileOpen не забывайте делать file.Pos = 0, т.е. устанавливать указатель файла на начало. Поскольку, если начальные байты случайно совпадут с байтами BOM для utf-8 или utf-16, то чтение файла начнётся после них, а не с самого начала. В какой-то теме этот казус уже обсуждался.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-09-18T12:15:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75458#p75458</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75457#p75457" />
			<content type="html"><![CDATA[<p>Ну, я вычленяя нужный фрагмент тупо использовал знакомые<br />StringGetPos<br />StrLen<br />StringTrimRight и т.п,<br /> где, кстати тоже несколько удобнее представление всегда в виде трёх знаков.</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T12:12:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75457#p75457</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75456#p75456" />
			<content type="html"><![CDATA[<p>Ну да, можно сворганить свой НЕХ точнее DEC редактор байтов. <br />Вот только зачем усложнять почти бесконечный цикл, если NumPut нужно только значение числа? <br />А при конвертации строки в цифры (это как я понял тоже понадобится), снова переделывать в трёхзначные, для осуществления поиска по тексту: <br /></p><div class="codebox"><pre><code>
File := FileOpen(FileName, &quot;r&quot;)   
Encoding := File.Encoding
file.Close()
string = 1 0 
VarSetCapacity( var, StrLen(string)) 
StrPut(string, &amp;var, Encoding)
Loop % StrLen(string)
    str .= NumGet(var, A_Index - 1, &quot;UChar&quot;) &quot; &quot;
MsgBox % str
</code></pre></div><p>Хотя до конца, все тонкости решения я непонимаю.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T11:58:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75456#p75456</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75455#p75455" />
			<content type="html"><![CDATA[<p>Для меня даёт наглядность при настройке и тестировании. Мне легче воспринимать в тестовом выводе, когда все элементы имеют одинаковую длину.&nbsp; Мелочь, а приятно.</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T11:40:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75455#p75455</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75454#p75454" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>особенно с дополнением из 23</p></blockquote></div><p> <br />Кроме усложнения обработки, что это даёт?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T10:52:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75454#p75454</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75453#p75453" />
			<content type="html"><![CDATA[<p>Код из 21 отлично работает, особенно с дополнением из 23. Спасибо, жаль только, что&nbsp; понимаю его на треть. Может со временем разберусь.</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T10:46:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75453#p75453</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75450#p75450" />
			<content type="html"><![CDATA[<p><strong>YMP</strong><br />Сделать нетрудно, но зачем?</p><div class="codebox"><pre><code>
Loop % Length 
     NumLen := StrLen(Num := NumGet(buf, A_Index - 1, &quot;UChar&quot;))
    , hex .= (NumLen = 1 ? 00 Num : NumLen = 2 ? 0 Num : Num) &quot; &quot; 
MsgBox % hex
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T08:30:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75450#p75450</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75449#p75449" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Подозреваю, что каждый байт должен отображаться тремя символами, т.е. не 1, а 001, например.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-09-18T08:27:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75449#p75449</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75448#p75448" />
			<content type="html"><![CDATA[<p>Нашёл излишнее связанное с NumPut:<br /></p><div class="codebox"><pre><code>
File := FileOpen(FileName, &quot;r&quot;), File.Pos := 0
File.RawRead(buf, Length := file.length)
File.Close()

Loop % Length
    hex .= NumGet(buf, A_Index - 1, &quot;UChar&quot;) &quot; &quot; 
 
 ; Здесь делаем нужные изменения в строке десятичных байтов, как в тексте
 ; Т.е. изменяем переменную &quot;hex&quot;

RegExReplace(hex, A_Space, &quot;&quot;, NewLength) ; Узнаём новое количество байтов по кол-ву пробелов в изменённой строке
VarSetCapacity(buf2, NewLength, 0)
 
Loop, parse, hex, %A_Space% 
    NumPut(A_LoopField, buf2, A_Index - 1, &quot;UChar&quot;)  

File := FileOpen(FileName2, &quot;w&quot;), File.Pos := 0
File.RawWrite(buf2, NewLength)
file.Close()
MsgBox
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T08:17:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75448#p75448</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75447#p75447" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Из моей теории, получился такой вот смешной код, вроде даже рабочий</p></blockquote></div><p> Спасибо! Попробую разобраться.</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T08:03:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75447#p75447</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75446#p75446" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Ну да, тоже было ощущение повтора темы. Кстати, задать вопрос и исчезнуть — не слишком красиво выглядит.</p></blockquote></div><p>&nbsp; Посыпаю голову пеплом. Ничего не понял в коде, решил попробовать разобраться позже, закрутился, потом вынужден был совсем отвлечься и благополучно забыл. Извиняюсь.</p><div class="quotebox"><blockquote><p>Ну как же не важно? Для кода сугубая конкретика нужна. Если байты задаются и отображаются как &quot;255 255 255&quot;, будет один код, если иначе — другой. Если перезапись идёт сразу — один код, если какие-то манипуляции (какие?) со считанным и на их основе перезапись — другой. ... Вы должны всё максимально конкретизировать, все детали?</p></blockquote></div><p>&nbsp; &nbsp; &nbsp; В каком виде бы я не получил нужную строку, мне нужно привести её в формат латинских букв и цифр, потом обработать и если для записи надо, опять можно преобразовать в&nbsp; &quot;255 255 255&quot;. Это можно сделать в подпрограмме которая уже практически существует, а потом вернуться в участок кода считывания/записи.</p><br /><div class="quotebox"><blockquote><p>Вот сейчас вам какой пример кода хотелось бы увидеть? Допустим, это будет функция. Что и в каком виде она должна принимать, что и в каком виде возвращать? Что должна делать в случае неудачи? Максимально конкретно можете описать?</p></blockquote></div><p>&nbsp; &nbsp;Самое удобное,&nbsp; получить всё в виде переменной в формате латинских букв и цифр. В случае, если самого файла нет, или строка не найдена и т.п, можно загонять в эту переменную ноль или в другую специальную, контрольную тот же ноль.</p>]]></content>
			<author>
				<name><![CDATA[Next]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28517</uri>
			</author>
			<updated>2013-09-18T08:00:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75446#p75446</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75445#p75445" />
			<content type="html"><![CDATA[<p>Из моей теории, получился такой вот смешной код, вроде даже рабочий:<br /></p><div class="codebox"><pre><code>
SetBatchLines -1
FileName =  
FileName2 =

File := FileOpen(FileName, &quot;r&quot;)  
file.RawRead(buf, Length := file.length)
file.Close()

Loop % Length
    hex .= NumGet(buf, A_Index - 1, &quot;UChar&quot;) &quot; &quot; 
 
 ; Здесь делаем нужные изменения в строке десятичных байтов, как в тексте
 ; Т.е. изменяем переменную &quot;hex&quot;

RegExReplace(hex, A_Space, &quot;&quot;, NewLength) ; Узнаём новое количество байтов по кол-ву пробелов в изменённой строке
VarSetCapacity(buf2, NewLength, 0)

SetFormat, IntegerFast, H
Loop, parse, hex, %A_Space% 
    NumPut(A_LoopField + 0, buf2, A_Index - 1, &quot;UChar&quot;)  

file := FileOpen(FileName2, &quot;w&quot;)
file.RawWrite(buf2, NewLength)
file.Close()
MsgBox
</code></pre></div><p>Тут создаётся новый изменённый файл, для перезаписи исходного файла нужно внести небольшие изменения.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-09-18T07:33:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75445#p75445</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Как в НЕтекстовом файле заменить строку?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=75444#p75444" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Next пишет:</cite><blockquote><p>PS. У меня кажется дежа вю...&nbsp; <a href="http://forum.script-coding.com/viewtopic.php?id=8453">http://forum.script-coding.com/viewtopic.php?id=8453</a></p></blockquote></div><p>Ну да, тоже было ощущение повтора темы. Кстати, задать вопрос и исчезнуть — не слишком красиво выглядит.</p><div class="quotebox"><blockquote><p>В каком виде его считывать и каком потом вписывать - не важно. Важно получить его, обработать и при необходимости вписать нужное на его место.</p></blockquote></div><p>Ну как же не важно? Для кода сугубая конкретика нужна. Если байты задаются и отображаются как &quot;255 255 255&quot;, будет один код, если иначе — другой. Если перезапись идёт сразу — один код, если какие-то манипуляции (какие?) со считанным и на их основе перезапись — другой. Получить, обработать и вписать — это слишком общая формулировка. Для человека она годится. Откроет файл в хекс-редакторе, переведёт калькулятором десятичное отображение искомых байтов в шестнадцатеричное, найдёт глазами эти байты, вобьёт что нужно с клавиатуры и сохранит файл. Но программа за вас додумать и сообразить ничего не может. Вы должны всё максимально конкретизировать, все детали.</p><p>Вот сейчас вам какой пример кода хотелось бы увидеть? Допустим, это будет функция. Что и в каком виде она должна принимать, что и в каком виде возвращать? Что должна делать в случае неудачи? Максимально конкретно можете описать?</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-09-18T05:31:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=75444#p75444</id>
		</entry>
</feed>
