![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
По вопросам памяти
Plut © (2003-03-22 09:39:00)Передаю в функцию адрес переменной типа word:
var
b : word;
begin
MyFunc(@b)...
выдаёт ошибку Access Violation..., причём не ссылается на адрес FFFFFFFFh а на какой-то другой
Помогите кто может!!!
MBo (2003-03-22 11:33:00) [1]a и b пишутся в c
Move(a,c,SizeOf(a));
Move(b,PByteArray(@c)[SizeOf(a)],SizeOf(b));
Anatoly Podgoretsky (2003-03-22 11:30:00) [2]Ты думаешь, что M, m1, m2 могут быть одновременно и PMas и TMas
Plut (2003-03-22 11:21:00) [3]Пардон, M, m1, m2 -
type
PMas = ^TMas;
TMas = array of byte;
Snap (2003-03-22 10:55:00) [4]Help----> Find----> GetMem
FreeMem
StrAlloc
StrFree
New
Dispose
SetLength
Anatoly Podgoretsky (2003-03-22 10:55:00) [5]А что такое вообще M, M1, M2
Ты хочешь, что бы и мы запутались или свихнулись.
Почитай статью Как правильно задавать вопросы
http://ln.com.ua/~openxs/articles/smart-questions-ru.html
Plut (2003-03-22 10:48:00) [6]Не хочу показаться назойливым, но хоть намёк дайте:(
Snap (2003-03-22 10:42:00) [7]Слушай всю структуру этих процедур долго объяснять, правда, почитай хелп.
Plut (2003-03-22 10:30:00) [8]GetMem(m,SizeOf(m)) - выделяю память под переменную pointer
Короче я совсем запутался.
Цель процедуры Splicing склеить две переменные разных типов и вернуть указатель на склеиное
Может что подскажете?
Snap (2003-03-22 10:23:00) [9]Для начала объясни почему у MyFunc и Splicig разное количество и качество параметров? Во вторых
GetMem(m,SizeOf(m));кажется мне довольно странным. Что ты этим хотел сделать?
ЗЫ. Почитай помощь в Дельфях по динамическим массивам и работой с кучей.
Plut (2003-03-22 10:19:00) [10]Ребятки, MyFunc (это образно), в действительности Splicing.
Подскажите мне пожалуйста, неучу.
Plut (2003-03-22 10:09:00) [11]procedure Splicing( Mas1, Mas2 : pointer; Len1, Len2 : integer; var p : PMas);
var
i : integer;
begin
GetMem(m,SizeOf(m));
SetLength(m^,Len1+Len2);
GetMem(m1,SizeOf(m1));
SetLength(m1^,Len1);
Move(Mas1,m1,Len1);
GetMem(m2,SizeOf(m2));
SetLength(m2^,Len2);
Move(Mas2,m2,Len2);
for i:=0 to Len1-1 do m^[i]:=m1^[i];
for i:=Len1 to Len1+Len2-1 do m^[i]:=m2^[i-Len1];
Move(m,p,Len1+Len2);
Finalize(m^);
FreeMem(m);
Finalize(m1^);
FreeMem(m1);
Finalize(m2^);
FreeMem(m2);
end;
Snap (2003-03-22 10:09:00) [12]Приведи код процедуры MyFunc
MBo (2003-03-22 10:01:00) [13]MyFunc ????