DeleteObjects (objectlist)
De Wiki1000
(Différences entre les versions)
Syfre (discuter | contributions)
(Page créée avec « <source lang='delphi'>procedure DeleteObjects(iStopOnError:boolean);</source> Cette procédure supprime les objets de la liste. {|class="wikitable" |- |iStopOnError |Sto... »)
(Page créée avec « <source lang='delphi'>procedure DeleteObjects(iStopOnError:boolean);</source> Cette procédure supprime les objets de la liste. {|class="wikitable" |- |iStopOnError |Sto... »)
Version actuelle en date du 7 novembre 2014 à 09:12
procedure DeleteObjects(iStopOnError:boolean);
Cette procédure supprime les objets de la liste.
iStopOnError | Stoppe si une erreur se produit |
- Si une transaction est ouverte la suppression se fait dans la transaction courante
- Si aucune transaction n'est ouverte une transaction séparée est utilisé
Pseudo code équivalent:
procedure doDeletes(iStopOnError:boolean); var idx:Integer; aRef:TitObject; begin // // Delete all the objects. // for idx:=Count-1 downto 0 do begin aRef := Refs[idx].Instance; if Assigned(aRef) then aRef._AddRef; Delete(idx); try if Assigned(aRef) then begin aRef.Deleted := TRUE; end; except if iStopOnError then begin Insert(idx,aRef); if Assigned(aRef) then aRef._Release; raise; end; end; if Assigned(aRef) then aRef._Garbage; end; end; procedure DeleteObjects(iStopOnError:boolean); begin if ClassManager.TranCount>0 then begin // instances are removed from the list doDeletes(iStopOnError); end else begin old := ClassManager.NewTransContext; try ClassManager.BeginTran; try doDeletes(iStopOnError); ClassManager.Commit([coNoConfirmDialog]); except Classmanager.RollBack; raise ; end; finally ClassManager.ActivateContext(old); end; end; end;
Voir aussi: