Hi Leute
ich habe leider mal wieder ein Problem.
Ich habe meine Klasse wie in dem Thread
http://www.delphipraxis.net/internal...t.php?t=147934 umgebaut. Da dieses Problem aber nicht mehr viel mit dem eigentlichen Thread zu tun hat schreibe ich einen neuen dafür:
Ich rufe die Buffer Write Funktion
function TTransferBuffer.Write(const Buffer; Count: integer): integer;
so auf:
Delphi-Quellcode:
TempMemory.CopyFrom(vAktFileStream, cTransferBufferReadSize);
TempMemory.Position := 0;
vCSBuffer.Enter;
try
Self.Write(TempMemory, TempMemory.Size); // Self ist der Transferbuffer
finally
vCSBuffer.Leave;
end;
Soweit funktioniert alles. Ich habe die Adresse (TempMemory.Memory) mit einem
RAM-Editor überprüft und dort stehen auch die ersten 20480 Bytes von der Datei (cTransferBufferReadSize = 20480).
Aber in der eigentliche Write funktion bekomme ich einen ganz anderen Pointer
Delphi-Quellcode:
function TTransferBuffer.Write(const Buffer; Count: integer): integer;
var
Address : Pointer;
begin
Address := Addr(Buffer);
Move(Address, vData, Count);
end;
function TTransferBuffer.Write(const Buffer; Count: integer): integer;
begin
Move(Buffer, vData, Count);
end;
bei beiden varianten bekomme ich eine
AV. Was auch verständlich ist den an dieser Pointer Position steht nur "müll".
Warum kommt bei der Funktion ein ganz anderer Pointer raus?