AW: String in TStringList finden verschnellern?
Zitat:
|
AW: String in TStringList finden verschnellern?
Müssen? War es nicht eher andersherum, wenn Duplikate ausgeschlossen werden sollen, muss Sorted auf true gesetzt werden?
|
AW: String in TStringList finden verschnellern?
Zitat:
Das Zulassen von Duplikaten bei einer sortierten Liste ist allerdings etwas zweischneidig: man weiß nie, welches er beim IndexOf/Find zurückliefert. |
AW: String in TStringList finden verschnellern?
Zitat:
Delphi-Quellcode:
dupError
Gruß K-H |
AW: String in TStringList finden verschnellern?
Zitat:
|
AW: String in TStringList finden verschnellern?
Zitat:
Delphi-Quellcode:
und da es im Create oder anderswo nicht gesetzt wird, entspricht der Standardwert auch dort
TDuplicates = (dupIgnore, dupAccept, dupError);
Delphi-Quellcode:
.
TDuplicates(0) = dupIgnore
|
AW: String in TStringList finden verschnellern?
Unter Delphi 7 erfolgt das Einfügen von Daten mit dieser Routine:
Delphi-Quellcode:
dupIgnore ist der "Normalfall", d. h.: Beim Auftreten von Dubletten werden diese nicht eingefügt. Die Stringliste hat also einen eindeutigen Inhalt.
function TStringList.Add(const S: string): Integer;
begin Result := AddObject(S, nil); end; function TStringList.AddObject(const S: string; AObject: TObject): Integer; begin if not Sorted then Result := FCount else if Find(S, Result) then case Duplicates of dupIgnore: Exit; dupError: Error(@SDuplicateString, 0); end; InsertItem(Result, S, AObject); end; Mit dupError kann man sich aber auch 'nen Fehler ausgeben lassen. Egal welche Wahl man trifft: Sofern Sorted = True, gibt es keine Dubletten in der Stringliste. |
AW: String in TStringList finden verschnellern?
Zitat:
Delphi-Quellcode:
trifft keines der case-Labels zu und der Code springt direkt zum
dupAccept
Delphi-Quellcode:
. Hast du es mal probiert?
InsertItem
|
AW: String in TStringList finden verschnellern?
Upps, Du hast recht.
Da hab' ich wohl mal wieder nur halb gelesen oder nur das gesehen, was ich sehen wollte oder so :-( |
AW: String in TStringList finden verschnellern?
Delphi-Quellcode:
Keinerlei Fehler beim Setzen von Sorted True im Nachhinein, selbst wenn Einträge Doppelt vorhanden sind.
procedure TForm1.Button2Click(Sender: TObject);
var sl: TStringList; begin sl := TStringList.Create; try sl.Sorted := False; sl.Add('123'); sl.Add('456'); sl.Add('123'); ShowMessage('Sorted False:' + sLineBreak + sl.Text); sl.Sorted := True; ShowMessage('Sorted True:' + sLineBreak + sl.Text); finally sl.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz