Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Objekt auf Übergabe prüfen.
20. Jan 2014, 19:50
Du hast einen Gedankenfehler
Delphi-Quellcode:
function Test( sl : TStringList; Index : Integer) : TObject;
begin
Result := sl.Objects[ Index];
sl.Delete( Index);
end;
procedure foo;
var
o : TObject;
begin
o := Test( MyStringList, 1 );
// o hat jetzt eine Referenz aus der StringList,
// oder es kam eine Exception in Test und der Rest hier wird auch nicht abgearbeitet
DoSomethingWith( o );
end;
oder hier der Ablauf mit einer Exception in Test
Delphi-Quellcode:
foo
o := Test( MyStringList, -1 );
Result := sl.Objects[ Index]; // Knallt und gibt eine Exception
// fertig mit Test
// fertig mit foo
// Eine MessageBox mit der Exception
und hier ohne Exception
Delphi-Quellcode:
foo
o := Test( MyStringList, 1 );
Result := sl.Objects[Index];
sl.Delete( Index );
// fertig mit Test
DoSomethingWith( o );
// fertig mit foo
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
Geändert von Sir Rufo (20. Jan 2014 um 19:54 Uhr)
|