Im oluştur Bölümde Aşağıdaki koduDelphi Erişim ihlali Okuma Nesne
var
List: TStrings;
ile aşağıdaki
Access violation at address 00404340 in module 'test.exe'. Read of address FFFFFFD5
alma :
Result := List.AddObject('hi', aCreatedObject);
MessageDlg(FunctionHookList.Objects[Result].ClassName, mtInformation, [mbOK], 0);
İleti iletişim
i := list.IndexOf('hi');
if i >= 0 then
if list.Objects[i] <> nil then
if assigned(list.Objects[i]) then
begin
tmp := list.Objects[i];
if tmp <> nil then
MessageDlg(tmp.ClassName, mtInformation, [mbOK], 0); //*******
end;
i
//*******
hattında yukarıda
Orada olduğunu biliyorum Erişim ihlali olsun
Ama daha sonra benim yaptığım zaman, doğru SinifAdi gösterir bir çift kopyalanmış kod var ama 'her şey' kontrol etmeye çalışıyordum '
"Sonra" derken ne demek istiyorsun?Belki bir theCreatedObject o anda ve list.Objects [i] geçersiz bir nesne döndürür. Lütfen değişken bildirimlerle tam bir işlev içinde bir örnek gönderin. – Ozan
kodunuz, i indeksindeki nesne nil ise iki kez kontrol edilir ve atanırsa bir kez. Bir kez tmp yapmak için Nesneleri [i] atayabilir ve tmp'yi kontrol edebilirsiniz: 'i i = = 0 sonra tmp: = Objects [i]; Atanmış (tmp) o zaman ... ' – mjn
@Ozan, aCreatedObject öğesinin imha edilmiş olabileceği düşünülüyordu, '