![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В куче - список из строк(HeapAlloc & HeapFree)
JJohn © (2005-10-04 00:50:00)есть вот такой вопрос...
Требуется разместить в куче список из N строк...
var P:Pointer;
P:=HeapAlloc(GetProcessHeap(), 0, dwBytes);
...
HeapFree(GetProcessHeap(), 0, P);
не пойму, что находится в '...', то есть как в динамически выделенную память размещать данные?
в голову почему-то лезет только что-то типа lstrcpy(P, 'строка') в цикле- где-то видел в какой-то программе...
Объясните, plzz
P.S.> Новичок с работой с памятью и API
JJohn (2005-10-04 22:36:00) [1]Digitman задание такое было..... простейший пример использования на примере размещения строк
Андрей Жук (2005-10-04 11:10:00) [2]
void RefreshInputLocales(HWND list)
{
int nNumLayouts;
nNumLayouts = GetKeyboardLayoutList(0,NULL); //получим количество раскладок
HKL *lpList = (HKL*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(HKL) * nNumLayouts); //выделим память на куче под список раскладок
GetKeyboardLayoutList(nNumLayouts, lpList); //получим список раскладок
SendMessage(list,LB_RESETCONTENT,0,0); //очистим бокс раскладок
for (int idx=0; idx<nNumLayouts;idx++) //пройдемся по списку раскладок
{
SendMessage(list, LB_ADDSTRING,0, (LPARAM)LanguageTable[LOWORD(*(lpList+idx))]); //добавим в бокс названия установленных раскладок
LanguageHKLTable[LOWORD(*(lpList+idx))] = *(lpList+idx); //запишем HKL в таблицу
}
HeapFree(GetProcessHeap(), 0, lpList); //очистим выделенную под список память
}
Digitman (2005-10-04 09:10:00) [3]
> JJohn © (04.10.05 00:50)
зачем тебе куча понадобилась ? объясни ..
если это требование какой-либо WinAPI-ф-ции, то в ее описании должы фигурировать подробности того как тобой д.б. представлен многострочный текст в этой области памяти - то ли строки должны разделяться нуль-терминатором (и, соответственно, такой многострочный текст должен завершаться двойным нуль-терминатором), то ли CRLF ...