AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kann ich das IntfClear vorziehen?

Ein Thema von Der schöne Günther · begonnen am 16. Okt 2014 · letzter Beitrag vom 17. Okt 2014
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.580 Beiträge
 
Delphi 12 Athens
 
#2

AW: Kann ich das IntfClear vorziehen?

  Alt 16. Okt 2014, 19:09
Kann ich das IntfClear am Ende einer Methode vorziehen?
Nein.

Internen Temp-Variablen kannst du nicht freigeben, da du nicht an deren Variablen ran kommst.
Einzige Lösungen:
  • vermeiden solcher Variablen, also alle Rückgabewerte immer in Variablen ... das gilt auch für Zwischenschritte, wo soein Interface entstehen könnte.
    In deinem Fall wäre es das Result vom xmlDoc.DocumentElement im xmlDoc.DocumentElement.AddChild('someChildNode');
  • den Code in einen extra Bereich verschieben, bei dessen Ende alles aus dessen Scope freigegeben wird
  • nichts in initialization/finalization, was ein Interface/DynArray/String/Vatiant/... zurück gibt

Keine Aufrufketten (maximal 1 Punkt pro Ausdruck, abgesehn von Namespaces) und alle Results selbst behandeln.
Delphi-Quellcode:
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
try
  xmlDoc := LoadXMLData('<rootNode />');
  xmlRoot := xmlDoc.DocumentElement;
  xmlNode := xmlRoot.AddChild('someChildNode');
  xmlNode := nil; xmlRoot := nil; xmlDoc := nil;
finally
  CoUninitialize;
end;
Delphi-Quellcode:
{procedure doXmlStuff;
var
  xmlDoc: IXMLDocument;
begin
  xmlDoc := LoadXMLData('<rootNode />');
  xmlDoc.DocumentElement.AddChild('someChildNode');
  //xmlDoc := nil;
end;}


procedure doXmlStuff;
begin
  LoadXMLData('<rootNode />').DocumentElement.AddChild('someChildNode');
end; // hier alles automatisch weg

procedure myProc;
begin
  CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
  try
    doXMLStuff;
  finally
    CoUninitialize;
  end;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Okt 2014 um 19:16 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz