Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизInvalid pointer operation Найти похожие ветки
← →
Vadim S (2003-10-29 16:15) [0]
function SFastPack(Source, Target: Pointer; SourceSize: LongInt): LongInt;
При FreeMem(t, $FFFA);
var
w, tmp: Word;
Sourc, Targ: LongType;
t, s: Pointer;
begin
GetMem(t, $FFFA);
GetMem(s, $FFFA);
Sourc.Ptr := Source;
Targ.Ptr := Target;
Result := 0;
while SourceSize <> 0 do
begin
if SourceSize > $FFFA then tmp := $FFFA
else tmp := SourceSize;
dec(SourceSize, tmp);
move(Sourc.Ptr^, s^, tmp);
w := SFastPackSeg(s, t, tmp);
inc(Sourc.Long, tmp);
Move(w, Targ.Ptr^, 2);
inc(Targ.Long, 2);
Move(t^, Targ.Ptr^, w);
inc(Targ.Long, w);
Result := Result + w + 2;
end;
FreeMem(t, $FFFA);
FreeMem(s, $FFFA);
end;
возникакт ошибка "Invalid pointer operation"
что не так?
← →
Vadim S (2003-10-29 16:17) [1]В операторах
GetMem(t, $FFFA);
FreeMem(t,$FFFA);
везде стоит адрес $FFFF!!!
← →
Smithson (2003-10-29 16:33) [2]Перезаписываешь сегмент памяти.
← →
Vadim S (2003-10-29 16:48) [3]Как сделать правильно?
← →
Вася Пупкин (2003-10-29 17:01) [4]А что делаешь здесь ?
w := SFastPackSeg(s, t, tmp);
← →
Vadim S (2003-10-29 17:03) [5]Кодируется сегмент
← →
Vadim S (2003-10-29 17:10) [6]
function SFastPackSeg(Source, Target: Pointer; SourceSize: Word): Word;
begin
asm
push esi
push edi
push eax
push ebx
push ecx
push edx
cld
xor ecx, ecx
mov cx, SourceSize
mov edi, Target
mov esi, Source
add esi, ecx
dec esi
lodsb
inc eax
mov [esi], al
mov ebx, edi
add ebx, ecx
inc ebx
mov esi, Source
add ecx, esi
add edi, 2
@CyclePack:
cmp ecx, esi
je @Konec
lodsw
stosb
dec esi
cmp al, ah
jne @CyclePack
cmp ax, [esi+1]
jne @CyclePack
cmp al, [esi+3]
jne @CyclePack
sub ebx, 2
push edi
sub edi, Target
mov [ebx], di
pop edi
mov edx, esi
add esi, 3
@Nimnul:
inc esi
cmp al, [esi]
je @Nimnul
mov eax, esi
sub eax, edx
or ah, ah
jz @M256
mov byte ptr [edi], 0
inc edi
stosw
jmp @CyclePack
@M256:
stosb
jmp @CyclePack
@Konec:
push ebx
mov ebx, Target
mov eax, edi
sub eax, ebx
mov [ebx], ax
pop ebx
inc ecx
cmp ebx, ecx
je @Lock1
mov esi, ebx
sub ebx, Target
sub ecx, Source
sub ecx, ebx
rep movsb
@Lock1:
sub edi, Target
mov Result, di
pop edx
pop ecx
pop ebx
pop eax
pop edi
pop esi
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c