|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Проверка существования секции в файле ini |
|
|
[решено] Проверка существования секции в файле ini
|
Старожил Сообщения: 156 |
Профиль | Отправить PM | Цитировать Привет! Логически вроде просто, но сообразить не могу. Итак, в текстовом поле составляется секция ini файла с параметрами. По нажатию кнопки содержание текстового поля должно записываться в этот ini файл. Как проверить имя секции на уникальность и предупредить пользователя, если имя совпадает?
|
|
Отправлено: 22:29, 08-09-2013 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать $sFileName = @ScriptDir & '\Test.ini' $sSectName = 'Prefs' $iExists = _IniSectionExists($sFileName, $sSectName) If $iExists Then MsgBox(262144+64, 'OK!', 'Section [' & $sSectName & '] exists in file <' & $sFileName & '>') ElseIf $iExists = -1 Then MsgBox(262144+48, 'Error!', 'File <' & $sFileName & '> was not found') Else MsgBox(262144+48, 'Error!', 'There is no section [' & $sSectName & '] in file <' & $sFileName & '>') EndIf Func _IniSectionExists($sIniFile, $sSectionName) If Not FileExists($sIniFile) Then Return SetError(1, 0, -1) EndIf IniReadSection($sIniFile, $sSectionName) If @error = 1 Then Return 0 EndIf Return 1 EndFunc |
------- Отправлено: 22:48, 08-09-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Да, почитал и понял, что неверно немного поставил задачу - записываемая и проверяемая строка не должна существовать и должна быть уникальной по имени в файле. Хотя может я что торможу...Время то позднее
|
Отправлено: 22:56, 08-09-2013 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
Если речь идёт о присвоении секции нового, уникального имени, то можно сделать так: $sFileName = @DesktopDir & '\Test.ini' $sSectName = 'Prefs' $sUniqueSectName = _IniSectGetUniqueName($sFileName, $sSectName) MsgBox(64, 'Title', $sUniqueSectName) ;Это и будет новое (уникальное) имя несуществующей секции Func _IniSectGetUniqueName($sIniFile, $sSectName, $sSep = '_') If Not FileExists($sIniFile) Then Return SetError(1, 0, $sSectName) EndIf Local $iC = 0 Local $sOrigin_SectName = $sSectName Local $aSectNames = IniReadSectionNames($sIniFile) While 1 For $i = 1 To UBound($aSectNames)-1 If $aSectNames[$i] = $sSectName Then $iC += 1 $sSectName = $sOrigin_SectName & $sSep & $iC ContinueLoop 2 EndIf Next ExitLoop WEnd Return $sSectName EndFunc |
|
------- Отправлено: 00:04, 09-09-2013 | #4 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Ошибся, поставив решенной. Итак, код у меня вышел такой, потом пояснения
Func _prov_unik() $TFILE=@ScriptDir&'/Setting.ini') $s_Sect=_GUICtrlEdit_GetLine($Edit2, 0) If $s_Sect="[Default]" Then MsgBox(4096, "Ошибка ", "Переименуйте секцию " & $s_Sect ) Return EndIf $iExists = _SectionExists($TFILE, $s_Sect) If $iExists Then MsgBox(262144+48, 'Ошибка!', 'Секция ' & $s_Sect & ' уже есть в файле ' & $TFILE ) ElseIf $iExists = -1 Then MsgBox(262144+48, 'Ошибка!', 'Файл' & $TFILE & ' не найден') Else MsgBox(262144+64, 'Error!', 'There is no section ' & $s_Sect & ' in file <' & $TFILE & '>') EndIf EndFunc Func _SectionExists($TFILE, $s_Sect) $TFILE=@ScriptDir&'/Setting.ini') $s_Sect=_GUICtrlEdit_GetLine($Edit2, 0) If Not FileExists($TCMFILE) Then Return SetError(1, 0, -1) EndIf IniReadSection($TCMFILE, $s_Sect) If @error = 1 Then Return 0 EndIf Return 1 EndFunc |
|
Отправлено: 13:47, 09-09-2013 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
|
|
------- Отправлено: 14:15, 09-09-2013 | #6 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Цитата eus_deus:
|
|
Отправлено: 14:27, 09-09-2013 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
Может лучше покажешь весь (рабочий) пример, чтобы было видно где ошибка и что требуется? |
|
------- Отправлено: 16:38, 09-09-2013 | #8 |
Старожил Сообщения: 156
|
Профиль | Отправить PM | Цитировать Creat0R, я ответил на ваш вопрос просто относительно квадратных скобок. С default все верно, так мне и надо. Не работает остальной код
Цитата eus_deus:
|
|
Отправлено: 16:45, 09-09-2013 | #9 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата eus_deus:
Нужно проверять без скобок: И вообще, не понятно что содержится в $Edit2, поэтому и написал... Цитата Creat0R:
|
||
------- Отправлено: 17:29, 09-09-2013 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Проверка существования файла | vilSK | Скриптовые языки администрирования Windows | 10 | 23-05-2013 12:40 | |
Разное - в файле desktop.ini на флешке в этом файле написано... | imrik | Microsoft Windows 2000/XP | 1 | 17-03-2012 00:58 | |
VBS/WSH/JS - Проверка существования файла | admin-nsk | Скриптовые языки администрирования Windows | 3 | 13-10-2010 12:25 | |
WMI filter проверка существования файла | farlow | Microsoft Windows NT/2000/2003 | 1 | 30-08-2007 09:17 | |
xsl проверка существования тега в xml | FADE | Вебмастеру | 3 | 23-04-2007 11:29 |
|