|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
Добрый день! Необходимо получить список ключей(key) в конкретной секции ini файла. Нашёл api-шную функцию GetPrivateProfileString Объявление: FUNCTION Ulong GetPrivateProfileString( REF string lpAppName, REF string lpKeyName, REF string lpDefault, REF string lpReturnedString, Ulong nSize, REF string lpFileName ) & LIBRARY "kernel32.dll" alias for "GetPrivateProfileStringA;Ansi" Вызов: Ulong ll_fs, d_size String lpAppName, lpKeyName, lpDefault, lpReturnedString, lpFileName lpAppName = 'SHEETS' SetNull(lpKeyName) lpDefault = '' lpFileName = 'C:\Work_v11\session_control\admsb.ini' d_size = 500 // ll_fs = GetPrivateProfileString( lpAppName, lpKeyName, lpDefault, lpReturnedString, 500, lpFileName ); // Возвращает имя только первого ключа. Что не так делаю? PowerBuilder 11.1 Build 8226 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 11:55 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
используемый ini ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 11:56 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
тебе нужна ф-ция Код: plaintext 1. 2. 3. 4. 5. 6.
она возвращает все строки указанной секции правда со значениями дальше дело техники распарсить их по переводу каретки и знаку равно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 12:26 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
и по поводу вызова: любые ref string надо инициализировать в билдере перед вызовом иначе будет крах т.е. примерно вызов такой: Код: plaintext 1. 2. 3. 4. 5.
и еще, используйте GetPrivateProfileSectionW а не GetPrivateProfileSectionA ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 13:00 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
Всё равно возвращает только первый ключ со значением. Даже если использовать GetPrivateProfileSectionNames , которая должна вернуть список всех секций - возвращает только первую. Не пойму в чём дело. Такое ощещение что что-то с переводом коретки. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 13:55 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
а... совсем забыл. возвращются строки разделенные нулевым символом (не переводом каретки) последняя строка заканчивается двумя нулевыми символами... т.е. вместо ref string надо ref blob со всеми вытекающими последствиями... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 14:30 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
Dmitry.., Спасибо, разобрался - всё получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 16:11 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
Dmitry..и по поводу вызова: любые ref string надо инициализировать в билдере перед вызовом иначе будет крах т.е. примерно вызов такой: Код: plaintext 1. 2. 3. 4. 5.
и еще, используйте GetPrivateProfileSectionW а не GetPrivateProfileSectionA Это что действительно надо делать во всех версиях РВ или только в этом частном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 16:45 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
да, для всех стринг (или блоб) переменных в которую внешняя длл должна что-то записать ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2010, 17:07 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
Возвращаясь к баранам, сегодня на Сайбесовских группах было предложено следующее: One alternative approach for parsing the series of null-separated (00 00) pairs is instead of blob to use BYTE and BYTE ARRAY variables in either of the following 3 ways: 1) by modifying the parameter of the external function like this: Код: plaintext 1.
And then call it and customize the replacement: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
2) after the external call convert your blob to a byte array for processing convenience: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
3) at last, you have the functions GetByte and SetByte which manipulate blobs at a byte-level, thus eliminating the need to use such String(BlobMid... or BlobEdit(..., EncodingAnsi!) constructs: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2010, 18:34 |
|
Получить список ключей (key) в секции ini файла
|
|||
---|---|---|---|
#18+
ну тогда уж в копилку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2010, 09:53 |
|
|
start [/forum/topic.php?fid=15&msg=36537631&tid=1335989]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 313ms |
total: | 451ms |
0 / 0 |