![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно использовать Команду MOVE ;? [D6, Win95/98, WinME, NT4, Win2k, WinXP]
IgorKuz © (2003-01-23 16:15:00)type
PMyRec = ^TMyRec;
TMyRec = record Data1 : word; Data2 : integer; end;
function GetBufr (P : pointer) : TMayRec;
var
PR : pointer;
N : TMyRec;
begin
Move(P,PR^,SizeOf(TMyRec));
// А вот Здесь уже не работает ?
N:=PMyRec(PR)^;
// ....
end;
procedure MyProc;
var
PR : pointer;
N : TMyRec;
begin
GetMem(P,100);
// .... Заполняю буфер
Move(P,PR^,SizeOf(TMyRec));
// Здесь все работает
N:=PMyRec(PR)^;
GetBufr(P);
//.....
end;
begin
MyProc;
end;
В функции GetBufr Данные в N записываются наполовину верно
gsu (2003-01-23 17:19:00) [1]>> IgorKuz ©
Так как же те помочь, ежли ты пишешь, что ни попадя ?
IgorKuz (2003-01-23 17:17:00) [2]Han_Malign
Это написано лишь для примера
мне нужно работать с указателями а типы считования могут быть разные
на счет видимости переменных я слышал :) . Одинаковые
названия просто для простоты понимания.
han_malign (2003-01-23 16:59:00) [3]И абсолютно не понятен смысл всех этих танцев с бубном:
GetBufr - абсолютно ничего не делает кроме Access Violation
Может подразумевалось
function GetBufr(p: pointer; Index: integer): TMyRec;
begin
inc(DWORD(p),Index*sizeof(TMyRec));
move(p^,Result,sizeof(TMyRec));
end;
??????????
З.Ы. Ты насчет области видимости переменных слышал??? N и PR в GetBufr, и N и PR в MyProc - это абсолютно разные переменные... А P совпадают только потому, что глобальная P передается в аргументе P...
Anatoly Podgoretsky (2003-01-23 16:46:00) [4]Не видать определения P
IgorKuz (2003-01-23 16:33:00) [5]Поправка после GetMem(P,100) есть GetMem(PR,SizeOf(TMyRrec))
Anatoly Podgoretsky (2003-01-23 16:29:00) [6]К Чубайсу
Игорь Шевченко (2003-01-23 16:28:00) [7]var
PR : pointer;
N : TMyRec;
begin
Move(P,PR^,SizeOf(TMyRec));
А PR, конечно, инициализировать не надо. И warnings у компилятора отключен по умолчанию ? В сад!
REA (2003-01-23 16:26:00) [8]Чтобы недоразумений не было использовать CopyMemory из W32API
gsu (2003-01-23 16:18:00) [9]+GetMem"s
Игорь Шевченко (2003-01-23 16:17:00) [10]Move(P^,PR^,SizeOf(TMyRec));