AGB  ·  Datenschutz  ·  Impressum  







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

Substrings Extract Delimited Values

Ein Thema von Sequitar · begonnen am 2. Nov 2023 · letzter Beitrag vom 6. Nov 2023
Antwort Antwort
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Substrings Extract Delimited Values

  Alt 6. Nov 2023, 15:48
Danke Euch für Eure Vorschläge!
Die Lösung mit
s.split() macht bisher einen guten Eindruck. Die Lösung von Thomas / mytbo werde ich noch prüfen


Zu den spezifischen Anforderungen wäre nur noch zu sagen:
- ich lade zzt eine Liste mit min 50M, max 100M, kommaseparierten (CSV) Einträgen vorberechnteter / vordefinierter Strings aus einer *.zip- Resource
- Ziel: es ist im Anschluss zu prüfen ob ein bestimmter Wert in dieser/n Liste/n vorkommt. Daher (denke ich) müsste ich die Resource bei programmstart durchsuchbar laden
- ich hatte überlegt, zwecks Speicherreduktion die Werte in einem (Binary-)Trie zu speichern (hier werden nicht die kompletten Strings gespeichert) statt in einer Stringlist / Tlist<>. Allerdings muss ich da noch überprüfen, inwiefern da die Geschwindigkeitseinbüßen zum durchsuchen meines Tries relevant sind.
-Ggf hatte ich überlegt, direkt auf Datenbank umzusteigen

Die Resourcen sind derzeit in einem Zip archiv (einzelne *.txt files) hinterlegt, Gäbe es hier eine Möglichkeit, ggf direkt auf den Zipstream zuzugreifen und darin zu suchen - statt extraktion/ übertragung von dort, oder macht das eher keinen Sinn?

Weitere Anforderungen an Format / Speicherung gibt es vorerst keine.>
@himitsu, wahrscheinlich wird es nicht direkt ersichtlich, wie viele Einträge geladen werden. Das könnte ich allerdings hierzu noch anpassen, um die capacity zu setzen
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#2

AW: Substrings Extract Delimited Values

  Alt 6. Nov 2023, 16:04
- Ziel: es ist im Anschluss zu prüfen ob ein bestimmter Wert in dieser/n Liste/n vorkommt. Daher (denke ich) müsste ich die Resource bei programmstart durchsuchbar laden
Delphi-Quellcode:
type
  TMyStrings = class
  private
    FArr: TArray<string>;
  public
    procedure LoadStrings(const Value: string);
    function ContainsItem(const Item: string): Boolean;
  end;

function TMyStrings.ContainsItem(const Item: string): Boolean;
var
  idx: Integer;
begin
  Result := TArray.BinarySearch<string>(FArr, Item, idx);
end;

procedure TMyStrings.LoadStrings(const Value: string);
begin
  FArr := Value.Split([',']);
  TArray.Sort<string>(FArr);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:09 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