· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› *.ini files - вопрос !

Посл.отвђт Сообщенiе


Дата: Июн 17, 2004 13:36:03

Знаю что возможно это тема уже издолблена но все равно ...
Вопрос вот в чем : создал программу в которой открываешь ини файл, пишешь имя секции .. и в эдит боксе выводиться все содержимое этой сукции ...
Используя ф-цию GetPrivateProfileString с параметрами 1) Имя секции 2)0 (не ищу ключь, нужена вся секция) 3) 0 (это понятно - возвращаю ноль если не найдено) 4) Куда возвращаю .5) Раазверэ области куда возвращаю 6) Имя файла :)
Но к моему сожалению выводиться только первый ключ найденой секции ...
Почему ?
И как сделать чтоб выводилась вся секция ?


Дата: Июн 17, 2004 13:51:13

GetPrivateProfileSection(sectname, buffer, buffer_size, ini_name) - кладет в буфер null-terminated строки - ключ+значение, наверное слитно. Конец обозначается вторым нулем.


Дата: Июн 17, 2004 14:32:47

Да ты прав в этом случае выводиться и ключь и значение .. НО выводиться только первый ключь и первое значение ... А мне нужно все ключи со всеми значениями в этой секции


Дата: Июн 17, 2004 18:56:16

разграничители между ключами (вместе со значениями) - '\0'.
конец блока (секции) - '\0\0';

MSDN:
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 sections and keys in a file. In either case, each string is followed by a null character and the final string is followed by a second null character.


Дата: Июн 17, 2004 19:58:17

Ну я и говорю - null-terminated(хотя правильней было бы сказать null-splitted)


Дата: Июн 17, 2004 22:52:49

Uri
: в фукции GetPrivateProfileSection нет параметра lpKeyName ...
Voodoo
:я не понял мне что в конце строки прибавлять еще один ноль чтоли ?
Если не сложно пример использование покажите ПОЖАЛУЙСТО


Дата: Июн 17, 2004 23:09:34 · Поправил: Funbit

DWORD GetPrivateProfileSection(
  LPCTSTR lpAppName,        // section name
  LPTSTR lpReturnedString,  // return buffer
  DWORD nSize,              // size of return buffer
  LPCTSTR lpFileName        // initialization file name
);
Parameters
lpAppName 
[in] Pointer to a null-terminated string specifying the 
name of the section in the initialization file. 

lpReturnedString 
[out] Pointer to a buffer that receives the key name and 
value pairs associated with the named section. The buffer
 is filled with one or more null-terminated strings; the last string is followed by a second null character. 
nSize 
[in] Size of the buffer pointed to by the lpReturnedString parameter, in TCHARs. 
Windows 95/98/Me: The maximum buffer size is 32,767 
characters. 
lpFileName 
[in] Pointer to a null-terminated string that specifies
 the name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory. 


вот в [out] параметре и написано, что ф-ция запишет в *твой* буфер массив строк вида:

key=value,0,
key=value,0,
....
key=value,0,0

а ты уж сам парси это как нужно.


Дата: Июн 18, 2004 11:08:55

ВОт я к примеру обращаюсь так :
text_buffer dd?
pMemory DWORD ?

.........

invoke GetWindowText,hwndEdit,ADDR text_buffer ,256

invoke GetPrivateProfileSection,addr text_buffer,\
addr pMemory ,sizeof MEMSIZE-1,ADDR buffer

invoke SendMessage,hwndEdit2,WM_SETTEXT,NULL,addr pMemory

Так я описал 2 области памяти для посылки и приема данных ... text_buffer - искомая секция ... pMemory - область памяти куда возвращаеться массив строк

А вот как вы говорите нада вывести пока не встречу \0\0 но как это сделать если в SendMessage выводитт область памяти пока не \0 .... ?


Дата: Июн 18, 2004 19:02:29

меняй одинарные нули на пробелы, пока не встретишь двойной. А уже тогда SendMessage...


Дата: Июн 18, 2004 19:58:39

Я разобрался ,... Всем большое спасибо !


З.Ы.
в особенности

////_Uri_\\\\


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.058