AGB  ·  Datenschutz  ·  Impressum  







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

Probleme beim Arraygröße ändern

Ein Thema von dominikkv · begonnen am 9. Jan 2007 · letzter Beitrag vom 10. Jan 2007
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Probleme beim Arraygröße ändern

  Alt 9. Jan 2007, 17:13
Zitat von sirius:
Wenn man ein "array of String" erstellt, sollte man sofort an eine TStringlist denken.

Hier mal ein Beispiel zum nachdenken:
Delphi-Quellcode:
procedure teilen(s:string;const a:TStringlist;const t:char=':');
begin
  a.Clear; //stringlist löschen
  a.Delimiter:=t; //Delimiter setzen
  a.DelimitedText:=s; //s wird in die Stringlist anhand des Delimiters einsortiert
end;
Hi,
an sich hat sirius natürlich recht! Ein Array immer dyn. in der Größe anzupassen ist schlechter Stil (besonders beim vergrößern um 1!), hier ist der Overhead für dieses Vergrößern (neuen Speicher allozieren, altes Array reinkopieren und alten Speicher frei geben) für ein Element doch recht hoch. Insbesondere, da das Allozieren, Kopieren und Freigeben nahezu konst. viel Zeit (bei beliebiger Anzahl von Elementen) benötigt. Da ist es besser einfach gleich eine Menge mehr Elemente zu allozieren und zu verwalten, wieviel man gerade vom gesamten Array verwendet (und genau das macht die TStringList).
Die sollte jedenfalls immer erste Wahl bei dyn. Anzahl von Strings sein, genau dafür ist die da! Mittels add kannst du ein neues Element hinzufügen, die passt die Größe (bei Bedarf) selbst an.

Ein praktischer Nebeneffekt, du hast die Eigenschaften Delimiter und DelimitedText, du kannst also anhand eines Trennzeichen einen String zerlegen. Einziges Problem, die Implementierung ist etwas fehlerhaft. Dummerweise wird hier jedes Leerzeichen immer als Delimitter betrachtet, unabhängig vom eingestellten Trennzeichen. Deswegen rate ich dir dazu, zwar die TStringList oder eben einen anderen TStrings-Nachkommen zu verwenden, aber das Trennen solltest du mit einer anderen Funktion (glaube du findest hier die Hier im Forum suchenexplode) vornehmen.

Gruß Der Unwissende

[ADD]
Ok, ich verweise lieber auf die hier: Split, da wird dann auch eine TStringList zurückgegeben[/ADD]
  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 07:58 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