AGB  ·  Datenschutz  ·  Impressum  







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

String dynamisch erstellen???

Ein Thema von romber · begonnen am 2. Mär 2010 · letzter Beitrag vom 3. Mär 2010
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: String dynamisch erstellen???

  Alt 3. Mär 2010, 06:59
Sei X dein String, der zu füllen ist.
Delphi-Quellcode:
Var
  CurrentCharCountInX : Integer;

Procedure InitializeX;
Begin
  SetLength (X, 1024);
  CurrentCharCountInX := 0
End;

Procedure EnsureProperLengthOfX (LengthOfStringToAdd : Integer);
Begin
  If CurrentCharCountInX + LengthOfStringToAdd > Length (X) Then
    SetLength (X, 2 * Length(X));
End;

Procedure AppendStringToX (Const aString : String);
Var
  LengthOfString : Integer;

Begin
  LengthOfString := Length(aString);
  EnsureProperLengthOfX (LengthOfString);
  Move (aString[1], X[CurrentCharCountInX + 1], LengthOfString);
  Inc (CurrentCharCountInX , LengthOfString);
End;

Procedure FinalizeX;
Begin
  SetLength (X, CurrentCharCountInX);
End;

// TODO: Gib X einen besseren Namen

(*
Aufruf:

InitializeX;
AppendStringToX (Str1);
...
AppendStringToX (StrN);
FinalizeX;
*)
Wesentlich besser sollte es, denke ich, nicht gehen. Vielleicht bringt das auch überhaupt nichts.
Natürlich kann/sollte man die generische Move-Routine durch einen Gewinner der FastCode-Challenge ersetzen. Auch ein 'Inline' sollte noch etwas bringen.

Aber im Wesen dürfte das nahe am Optimum sein. Aber wie Astat schon treffend anmerkte, braucht das im normalen Leben kein Schwein. Vor allen Dingen nicht, wenn der String anschließend als SQL-Befehl an einen SQL-Server geschickt wird. Ich vermute in diesem Fall den Performancebottleneck nämlich nicht beim Konkatenieren...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 22:20 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