TGuid =
record // eigene GUID
private
fTS1: TDateTime;
fTS2: TDateTime;
fC: LongWord;
function get_AsString:
String;
function get_TS1: TDateTime;
function get_TS2: TDateTime;
procedure set_AsString(
const Value:
String);
function get_C: LongWord;
public
class operator Equal(
const Guid1, Guid2: TGuid): Boolean;
class operator NotEqual(
const Guid1, Guid2: TGuid): Boolean;
class operator GreaterThan(Guid1, Guid2: TGuid): Boolean;
// class operator GreaterThanOrEqual(Guid1, Guid2: TsoGuid): Boolean;
class operator LessThan(Guid1, Guid2: TGuid): Boolean;
// class operator LessThanOrEqual(Guid1, Guid2: TsoGuid): Boolean;
function IsNotEmpty: Boolean;
function IsEmpty: Boolean;
property TS1: TDateTime
read get_TS1
write fTS1;
property TS2: TDateTime
read get_TS2
write fTS2;
property C: LongWord
read get_C
write fC;
property AsString:
String read get_AsString
write set_AsString;
end;
...
class operator TGuid.Equal(
const Guid1, Guid2: TGuid): Boolean;
begin
Result := (Guid1.fTS1 = Guid2.fTS1)
and (Guid1.fTS2 = Guid2.fTS2)
and (Guid1.fC = Guid2.fC);
end;
...
aGuid.AsString := aId;
if Pos('
-00002', aGuid.AsString) > 0
then // TEST, diese GUID ist definitiv enthalten
begin
System.SysUtils.Beep;
CodeSite.Send('
Get:' + aGuid.AsString + '
(from ' + IntToStr(Project.DataGuidList.Count) + '
)');
for Key
in Project.DataGuidList.Keys
do
begin
if (aGuid = Key)
then // der Key ist mit der gesuchten Guid identisch
begin
CodeSite.Send('
Found! ' + aGuid.AsString);
S1 := Key.AsString;
Value :=
nil;
Project.DataGuidList.TryGetValue(Key, Value);
if Assigned(Value)
then
S2 := Value.Guid.AsString
else
S2 := '
nil';
CodeSite.Send(S1 + '
: ' + S2);
// Key wird gefunden
S1 := aGuid.AsString;
Value :=
nil;
Project.DataGuidList.TryGetValue(aGuid, Value);
if Assigned(Value)
then
S2 := Value.Guid.AsString
else
S2 := '
nil';
CodeSite.Send(S1 + '
: ' + S2);
// aGuid wird nicht gefunden obwohl dieses identisch zu Key ist !?
S1 := Key.AsString;
Value :=
nil;
Project.DataGuidList.TryGetValue(Key, Value);
if Assigned(Value)
then
S2 := Value.Guid.AsString
else
S2 := '
nil';
CodeSite.Send(S1 + '
: ' + S2);
// Key wird gefunden
aGuid := Key;
// aGuid wird Key zugewiesen, obwohl ich sonst keine Differenz feststellen kann
S1 := aGuid.AsString;
Value :=
nil;
Project.DataGuidList.TryGetValue(aGuid, Value);
if Assigned(Value)
then
S2 := Value.Guid.AsString
else
S2 := '
nil';
CodeSite.Send(S1 + '
: ' + S2);
// aGuid wird jetzt gefunden
end;
S1 := Key.AsString;
Value :=
nil;
Project.DataGuidList.TryGetValue(Key, Value);
if Assigned(Value)
then
S2 := Value.Guid.AsString
else
S2 := '
nil';
CodeSite.Send(S1 + '
: ' + S2);
// Key wird gefunden
end;
if not Project.DataGuidList.TryGetValue(aGuid, lGuid)
then
System.SysUtils.Beep;
end;
{ Log
Found! 20151011203151087-20151011203151630-00002
20151011203151087-20151011203151630-00002: 20151011203151087-20151011203151630-00002
20151011203151087-20151011203151630-00002: nil
20151011203151087-20151011203151630-00002: 20151011203151087-20151011203151630-00002
20151011203151087-20151011203151630-00002: 20151011203151087-20151011203151630-00002
20151011203151087-20151011203151630-00002: 20151011203151087-20151011203151630-00002
}