我有這個秒殺測試TPair。您可以複製+粘貼到新的Delphi XE控制檯應用程序上。我已經標有異常的行:德爾福TPair異常
項目PROJECT1.EXE「模塊訪問衝突在地址0045042D ‘PROJECT1.EXE’引發的異常 類EAccessViolation有消息 。閱讀 地址A9032D0C。
任何想法?
謝謝。
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Generics.Defaults,
Generics.Collections;
type
TProduct = class
private
FName: string;
procedure SetName(const Value: string);
published
public
property Name: string read FName write SetName;
end;
type
TListOfProducts = TObjectDictionary<TProduct, Integer>;
{ TProduct }
procedure TProduct.SetName(const Value: string);
begin
FName := Value;
end;
var
MyDict: TListOfProducts;
MyProduct1: TProduct;
MyProduct2: TProduct;
MyProduct3: TProduct;
APair: TPair<TProduct, Integer>;
aKey: string;
begin
try
MyDict := TListOfProducts.Create([doOwnsKeys]);
MyProduct1 := TProduct.Create;
MyProduct1.Name := 'P1';
MyProduct2 := TProduct.Create;
MyProduct2.Name := 'P2';
MyProduct3 := TProduct.Create;
MyProduct3.Name := 'P3';
MyDict.Add(MyProduct1, 1);
MyDict.Add(MyProduct2, 2);
MyDict.Add(MyProduct3, 3);
APair := MyDict.ExtractPair(MyProduct1);
Writeln(APair.Key.Name); // <--- Error is Here.
Writeln(IntToStr(APair.Value));
Readln(aKey);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
你說'// <---錯誤在這裏,但你不會說錯誤是什麼。知道這一點,當你沒有在機器上安裝XE的副本時,可以更容易地提供幫助。 – 2011-05-02 20:56:28
對不起......我添加了具體的異常錯誤消息。 – ferpega 2011-05-02 21:38:07
這是一個謎,我不能爲我的生活看到一個問題! – 2011-05-02 21:56:56