AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi [BorCon] Einführung in die .NET Framework Klassen Bibliothek
Tutorial durchsuchen
Ansicht
Themen-Optionen

[BorCon] Einführung in die .NET Framework Klassen Bibliothek

Ein Tutorial von sakura · begonnen am 11. Okt 2004 · letzter Beitrag vom 11. Okt 2004
 
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.420 Beiträge
 
Delphi 12 Athens
 
#7

Re: [BorCon] Einführung in die .NET Framework Klassen Biblio

  Alt 11. Okt 2004, 15:46
System.String und System.Text.StringBuilder


Es ist wichtig zu wissen, dass eine Instanz von System.String nie modifiziert werden kann. Das heißt, einmal erstellt, kann der enthaltene String nicht mehr geändert werden. Alle Anweisungen, welche den Anschein haben den String zu ändern erstellen im Hintergrund eine neue String-Instanz und liefern diese zurück. Während eine augenscheinlich einfache Anweisung wie:
Foo := Foo + 'Another String'; auf den ersten Blick gut aussieht, so wird man in einer Schleife schnell feststellen, dass dem nicht so ist. Der Grund? Der String Foo muss mit jeder Änderung neu erstellt werden und das kann sehr langsam sein.

The Lösung ist denkbar einfach, man kann die Klasse System.Text.StringBuilder nutzen:
Delphi-Quellcode:
var
  Attributes: AttributeCollection;
  AnAttribute: Attribute;
  DefaultEventAttr: DefaultEventAttribute;
  MyBuilder: StringBuilder;
begin
  { The above implementation of writing to the text box string is slow
    since strings are immutable (can't be changed) }

  { Instead of simply performing string concatenations,
    it is more performant to use a StringBuilder class }

  Attributes := TypeDescriptor.GetAttributes(Self);
  MyBuilder := StringBuilder.Create;
  MyBuilder.Append(' -- All Attributes on the Type ---'#13#10);
  for AnAttribute in Attributes do
  begin
    MyBuilder.Append(AnAttribute.ToString);
    MyBuilder.Append(#13#10);
  end;
  TextBox1.Text := MyBuilder.ToString;
end;
Hinweis: In diesem einfachen Beispiel wird man kaum Performanceunterschiede bemerken, aber in einer langen und engen Schleife wird man! Wenn man Zweifel hat, sollte man wahrscheinlich immer auf die Klasse System.Text.StringBuilder zurückgreifen.
Lizbeth W.
 
 


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:06 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