![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#2
|
||||
|
||||
![]() Использовать Assigned (в хелпе довольно подробно расписано), только нужно внимательно относится к переменным и не забывать про Буратину и яблоки
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
ined (29.06.2012)
|
#3
|
||||
|
||||
![]() Цитата:
![]() 11011111 INED Home code VK |
#4
|
||||
|
||||
![]() эх не получилось, что я хотел.
Код:
procedure BoolMem(var p:pointer; NewSize:cardinal); begin if Assigned(p) then FreeMem(p,MSize); GetMem(p,NewSize); MSize:=NewSize; end; Условие таково, что бы при первичном входе в эту процедуру не срабатывал FreeMem. Что можете предложить по этому вопросу? 11011111 INED Home code VK |
#5
|
||||
|
||||
![]() а как же VirtualQuery?
Вроде должно помочь в твоей ситуации. http://www.podgoretsky.com/ftp/Docs/...tualQuery.html — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
||||
|
||||
![]() Для первого входа:
Код:
p:=nil; MSize:=15; BoolMem(p,MSize); Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#7
|
||||
|
||||
![]() Цитата:
Цитата:
11011111 INED Home code VK |
#8
|
||||
|
||||
![]() Я ж дал ссылку с описанием как она работает.
Просто поинтер передать, а дальше флаги проверять MEM_COMMIT или че-то в этом роде. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#9
|
||||
|
||||
![]() Цитата:
Код:
procedure BoolMem(var p:pointer; NewSize:cardinal); var B:TMemoryBasicInformation; begin if VirtualQuery(p,B,MSize) = S_OK then FreeMem(p,MSize); GetMem(p,NewSize); end; При первом входе MSize может иметь разные значения. Пробовал При MSize:= 0 - 20 он пропускает. Это не есть хорошо!!! 11011111 INED Home code VK |
#11
|
|||
|
|||
![]() А еслиб авира запищала, вы бы и ей верили?
|
#12
|
||||
|
||||
![]() Цитата:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Вот из MSDN Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 29.06.2012 в 15:09. |
#13
|
||||
|
||||
![]() 1.
Код:
var b: PByte; mbi: MEMORY_BASIC_INFORMATION; begin New(b); VirtualQuery(b, mbi, SizeOf(MEMORY_BASIC_INFORMATION)); ... Пишу программы за еду. __________________ |
#14
|
||||
|
||||
![]() Цитата:
У меня уже такое случалось, когда за спиной стоит тёща, а на экран, вдруг от куда не возьмись, появилась реклама штучек интимного характера. Вот тогда было на её лице изумительно большие глазки, от увиденного ![]() 11011111 INED Home code VK |
#15
|
||||
|
||||
![]() Всё я разобрался. Нашёл интересную для меня цитату -
__________________________________________________ ____________ Во всех известных версиях Delphi действует следующая не совсем документированная фишка (разработчики в документации к одной из версий сказали, что это так, но в будущей версии может и не быть. Но пока есть): Все глобальные переменные автоматически иницилизируются (нулём или пустым значением). А вот локальные переменные - не иницилизируются. __________________________________________________ _____________ В этом была вся проблема. Спасибо всем за внимание. 11011111 INED Home code VK |