![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Memory, как определить размер и область памяти для нового процеса [D5, D6, D7, Win2k, WinXP]
polinom © (2006-01-17 15:05:00)Как определить доступную память для нового процесса, размер, область и так чтобы он не смог переопределять собственный размер.
Пример : У моего процесса есть динамический объект Р , требуется при new(p) и остальных обращений к памяти все динамические объекты размещались в строго определённом заранее выделенном месте памяти !
Помогите решить....!
Leonid Troyanovsky (2006-01-18 08:29:00) [1]
> polinom (17.01.06 16:01) [7]
> var p:^Tform
..
> p:=getmem(p,sizeof(Tform)); //задаём область памяти
> Tform.InitInstance(p); // инициализируем
> p.Create(self); //без этого не работает
..
> как быть?
Не надо извращений.
var
p: TFormX;
..
p:= TFormX.Create(nil);
..
--
Regards, LVT.
Игорь Шевченко (2006-01-17 17:23:00) [2]"Соблюдайте тематику конференции, сообщения "не в тему" будут просто удаляться! Просто потрепаться вы можете в соответствующей конференции"
polinom (2006-01-17 17:15:00) [3]Удалено модератором
polinom (2006-01-17 17:10:00) [4]Удалено модератором
Игорь Шевченко (2006-01-17 17:09:00) [5]
> Как с тобой связаться если можно
Со мной не надо связываться, надо задавать вопросы на форуме, он для этого и предназначен. Индивидуальных консультаций я не даю.
polinom (2006-01-17 17:04:00) [6]Удалено модератором
Примечание: Offtopic
polinom (2006-01-17 17:01:00) [7]Спасибо дома попробую.
Как с тобой связаться если можно!?
я sergey.nnby@rambler.ru или ICQ 253539137
Игорь Шевченко (2006-01-17 16:52:00) [8]
> покажи пример переопределения метода
unit ParentForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TfParent = class(TForm)
public
class function NewInstance: TObject; override;
procedure FreeInstance; override;
end;
var
FormMemory: array[0..2047] of Byte;
implementation
{$R *.DFM}
{ TfParent }
procedure TfParent.FreeInstance;
begin
//Do nothing
end;
class function TfParent.NewInstance: TObject;
begin
Result := Tobject(@FormMemory);
InitInstance (Result);
end;
end.
Главная форма:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ParentForm, StdCtrls;
type
TfMain = class(TfParent)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
fMain: TfMain;
implementation
{$R *.DFM}
procedure TfMain.Button1Click(Sender: TObject);
begin
ShowMessage('Hello, world');
end;
end.
DPR:
program CustomMM;
uses
Forms,
ParentForm in 'ParentForm.pas' {fParent},
Main in 'Main.pas' {fMain};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.Run;
end.
polinom (2006-01-17 16:28:00) [9]слушай если можно покажи пример переопределения метода при выполнении или ты имеешь в виду переписать модуль system ?
я недружил до этого с перенаследованием!
А может изменить ссылку на метод, но как тогда узнать адресс ячеек самого указателя, или заранее переписать SYSTEM так чтобы было видно из следующих TObjekt, TComponent, TForm аддес или сам метод?
Как ты считаешь?...........
Игорь Шевченко (2006-01-17 16:16:00) [10]
> пост [2] ? я не месный это што?
Сообщения в ветке нумеруются.
Для объектов - переопределить метод NewInstance.
Для указателей - написать свой Memory Manager
polinom (2006-01-17 16:12:00) [11]пост [2] ? я не месный это што?
Игорь Шевченко (2006-01-17 16:09:00) [12]см. пост [2]
polinom (2006-01-17 16:05:00) [13]а нужно так дал 50 кб и пользуйся, так нет кроме этого и ещё хватает!
polinom (2006-01-17 16:01:00) [14]это не решение проблеммы с конролирования памяти это проблема в решение задачи!
например
var p:^Tform
........
p:=getmem(p,sizeof(Tform)); //задаём область памяти
Tform.InitInstance(p); // инициализируем
p.Create(self); //без этого не работает хоть имеет адреса всех
методов
но после Create хватает кусок не заданной лишней динам. памяти
как быть?
Игорь Шевченко (2006-01-17 15:48:00) [15]polinom (17.01.06 15:46) [5]
Переопредели у предка, унаследуй нужные классы от этого предка. Или используй MemProof для поиска утечек.
polinom (2006-01-17 15:46:00) [16]переопределения это гуд, но если я пользуюсь множеством Классов , то это значительно затруднит написание программы!
Игорь Шевченко (2006-01-17 15:43:00) [17]
> смысл контроля ресуров памяти
MemProof.exe
polinom (2006-01-17 15:43:00) [18]смысл контроля ресуров памяти
Игорь Шевченко (2006-01-17 15:42:00) [19]Для объектов - переопределить метод NewInstance.
Для указателей - написать свой Memory Manager
Первое проще
wal (2006-01-17 15:41:00) [20]А смысл?