Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
C-шная прога для определения булевых параметров (ДА/ НЕТ) использует принцип: Код: plaintext 1. По имеющейся логике для true сохраняется: value -DWORD=1 -если реестр value=true - если ini-файл (если сохранять родными механизмами библиотеки ptlib) Для false -параметр просто стирается. Но в принципе ей пофиг. Если написать в ini: value=0 value=false value= то HasOption будет все равно true, все параметры считываются в аргументы и проверяется наличие а не значение. Я правлю ini независимой программой. Для bool по своей логике я обычно использую value=0 //false value=1 //true Ну и достаю (для отображения в настройщике) по принципу: Код: vbnet 1. Соответственно если написано (ну мало ли, умник залез и ручками исправил) value=0 то приложение args.HasOption("value") решит что TRUE а настройщик покажет что CBool(0) = FALSE непорядок Отсюда вопрос: Как вычислить НАЛИЧИЕ параметра в заданной секции? Поиском пока нарыл, что в паскале есть ф-ция INI.ValueExists() Но Паскаль меня мало интересует, а в API я такой ф-ции явно не вижу. Открывать INI как текстовуху и искать в лоб -честно бы не хотелось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 06:13 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Ну если только на базе этого: GetPrivateProfileString function If lpKeyName is NULL, the function copies all key names in the specified section to the supplied buffer. An application can use this method to enumerate all of the ...keys ... each string is followed by a null character and the final string is followed by a second null character. If the supplied destination buffer is too small to hold all the strings, the last string is truncated and followed by two null characters. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 08:36 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
RTFM GetPrivateProfileString() If the key does not exist, the function copies the default character string specified by the lpDefault parameter. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 13:13 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovRTFM GetPrivateProfileString() If the key does not exist, the function copies the default character string specified by the lpDefault parameter. А идея в чем? Предлагаешь впихнуть в lpDefault "Какая-нибудь редкостная билиберда", и если она окажется в буфере, то значит ключа нет. А как насчет? value=Какая-нибудь редкостная билиберда //=lpDefault ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 13:47 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77А как насчет? Я не понял: ты читаешь ini-файл сформированный другой программой или безумным пользователем?.. Запихни в Defaul свежесгенерированный GUID. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 13:51 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
документацию читать, а не курить нужно. MSDN GetPrivateProfileStringlpKeyName [in] The name of the key whose associated string is to be retrieved. If this parameter is NULL, all key names in the section specified by the lpAppName parameter are copied to the buffer specified by the lpReturnedString parameter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 13:55 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77По имеющейся логике для true сохраняется: value=true - если ini-файл (если сохранять родными механизмами библиотеки ptlib) Для false -параметр просто стирается. Перебирать все ключи только для того, чтобы отличить "true" от всего остального, включая lpDefault это по-нашему, по-советски. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 13:59 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Изопропилдокументацию читать, а не курить нужно. А я разве не тоже самое во втором посте сверху написал? Там и код готовый. Ну, да, по документации это единственное что можно сделать. Dimitry Sibiryakov, ну можно конечно и GUID, но список ключей в секции и есть ли там нужный - вряд ли это долго. Думаю GetPrivateProfileString делает это за один проход. >Я не понял: ты читаешь ini-файл сформированный другой программой или безумным пользователем?.. Да ini то формируется той же VB-мордой что и читает его. Но любителей залесть в ini и вместо value=1 попытаться написать value=0 вполне хватает. Просто не совсем обычный способ восприятия C-шной прогой. И не менять же этот код только потому что я захотел использовать ini вместо реестра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 15:29 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Просто не совсем обычный способ восприятия C-шной прогой. Поскольку функция HasOption() - нестандартная, тебе лучше найти в этой проге её исходники и посмотреть как они сделаны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 15:33 |
|
||
|
А как проверить наличие ключа (а не значение) в ini-файле?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Код: plaintext 1. 2. 3. 4. 5. Там все прозрачно. Там без вопросов. proga.exe --option1 --option2 value 2 --option3 Есть параметр в командной строке - значит HasOption(option1)=true просто оно умеет читать из разных источников: 1) command line 2) registry 3) ini 4 либо конфиг файл в линуксе и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38606429&tid=2019560]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 291ms |
| total: | 472ms |

| 0 / 0 |
