|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как заменить строку [27] в файле? |
|
|
[решено] Как заменить строку [27] в файле?
|
|
Ветеран Сообщения: 842 |
Как заменить строку [27] в файле?
Все другие строки должны сохраниться. |
|
|
------- Отправлено: 01:03, 05-04-2009 |
|
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 01:11, 05-04-2009 | #2 |
|
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать А нельзя номер строки [25] конкретно? Без Find!
|
|
------- Отправлено: 01:13, 05-04-2009 | #3 |
|
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать пример:
#region: - Option
Opt('MustDeclareVars', 1)
Opt('TrayIconDebug', 1)
Opt('TrayIconHide', 0)
Opt('WinTitleMatchMode', 2)
#endregion
HotKeySet('{ESC}', '_Pro_Exit')
Local $sFilePath = 'c:\test.txt'
Local $iReplaceStringInFileByindex = _ReplaceStringInFileByindex($sFilePath, 4, '<new текст>')
If $iReplaceStringInFileByindex == -1 Then
MsgBox(48, 'Внимание', 'Ошибка открытия файла' & @CRLF & 'Код ошибки: ' & $iReplaceStringInFileByindex)
Else
MsgBox(64, 'Результат замены', 'Колличество замен: ' & $iReplaceStringInFileByindex)
ShellExecute($sFilePath)
EndIf
Func _ReplaceStringInFileByindex($sFilePath, $iIndexString, $sReplaceString)
Local $hFile = FileOpen($sFilePath, 0)
If $hFile == -1 Then
;~ MsgBox(48, 'Внимание', 'Ошибка открытия файла' & @CRLF & 'Код ошибки: ' & $hFile)
Return -1
EndIf
Local $i = 1
Local $iCountReplace = 0
Local $sFileString, $sFileText
While 1
$sFileString = FileReadLine($hFile)
If @error == -1 Then ExitLoop
If $i == $iIndexString Then
$sFileText &= $sReplaceString & @CRLF
$iCountReplace += 1
Else
$sFileText &= $sFileString & @CRLF
EndIf
$i += 1
Wend
FileClose($hFile)
If NOT $iCountReplace Then Return 0
If StringRight($sFileText, 2) == @CRLF Then $sFileText = StringTrimRight($sFileText, 2)
$hFile = FileOpen($sFilePath, 2)
FileWrite($hFile, $sFileText)
FileClose($hFile)
Return $iCountReplace
EndFunc
Func _Pro_Exit()
Exit
EndFunc
|
|
------- Отправлено: 01:29, 05-04-2009 | #4 |
|
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Стоп-стоп-стоп!
![]() Зачем так много кода на такое простое действие ![]() Я тут на самом деле в тупик зашёл... Дело в том, что вот кусок файла "test" И по сути надо заменить строку Top=192, но всё дело в том, что значение может быть любым! То-есть Top=192 Top=193 Top=190 итп. Неизвестно изначально! Top=??? А как тогда быть? ![]() Нет ли каких масок типа *.* или ? для кода? Чтоб искать по слову "Top= плюс+AnySymbols" |
|
|
------- Отправлено: 01:38, 05-04-2009 | #5 |
|
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата:
$iNewVal = 190 _ReplaceStringInFileByindex($sFilePath, 3, 'Top=' & $iNewVal) $iNewVal = 191 _ReplaceStringInFileByindex($sFilePath, 3, 'Top=' & $iNewVal) Цитата:
Цитата semiono:
И самое лучшее: |
|||
|
------- Отправлено: 01:53, 05-04-2009 | #6 |
|
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Можно ещё так:
#include <File.au3>
_FileReplaceLine("Test.txt", 25, "New Line")
Func _FileReplaceLine($sFile, $iLine, $sNewLineStr)
Local $aRead_File
If Not _FileReadToArray($sFile, $aRead_File) Then Return SetError(1, 0, 0)
For $i = 1 To $aRead_File[0]
If $i = $iLine Then
$aRead_File[$i] = $sNewLineStr
_FileWriteFromArray($sFile, $aRead_File, 1)
Return 1
EndIf
Next
Return SetError(2, 0, 0)
EndFunc
Цитата:
|
|
|
------- Отправлено: 02:25, 05-04-2009 | #7 |
|
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Ура! New Line вписалось!
А ето ещё лучше!!! Вот то что и хотелось, одной строкой ![]() Хотя, спасибо все навороты тоже были интересными, пригодиться потом! offtop: У меня калькулятор каждый раз сдвигается игнорируя таск бар наверху, я решил ему Loader приписать, чтоб он затирал его INI и возвращал на место инициализации, раз уж производители криво зделали ![]() Видимо он отсчитывает X:Y от края экрана, и переписывает инифайл невзирая на то что нормальные проги, считают от таскбара... Блин, инифайлы - это вообще очень хорошо! Весьма часто нужно такое! Я и не знал что такое имеется в AutoIt ! |
|
------- Отправлено: 02:49, 05-04-2009 | #8 |
|
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать а том, что у вас тсруктура файла обычного INI файла - с самого начала стоило начинать!
.................) + для этих целей (у меня просто много таких нарушителей программ) есть хорошая и очень легкая утилиа |
|
------- Отправлено: 02:56, 05-04-2009 | #9 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Ресурсы - [решено] Как заменить курсоры в Windows 7? | antipuh | Оформление Windows 11/ 10 / 8 / 7 / Vista | 5 | 13-04-2010 19:46 | |
| [решено] Найти и заменить в текстовом файле. Как? | Pozia | AutoIt | 15 | 11-03-2010 19:12 | |
| [решено] Как переместить выделенную строку ListView | malev | AutoIt | 3 | 15-11-2009 12:29 | |
| [решено] Как заменить строку в ENTRIES.INI средствами автоматизации. | semiono | AutoIt | 17 | 08-04-2009 12:04 | |
| Как заменить строку <input type... | Rustemal | Вебмастеру | 1 | 29-06-2003 15:26 | |
|