![]() |
Bestimmte Records aus einem Array heraussuchen
Hallo!
In meinem Programm werden Dateiangaben in Records zur Weiterverarbeitung in einem dynamischen Array gespeichert. Ein Eintrag beinhaltet hierbei u.a. Dateinamen, Pfad, etc. Derzeit durchsuche ich das Array mit einer einfachen for..next-Schleife, bis ich z.B. alle Records mit einem bestimmten Pfad gefunden habe. Das ganze funktioniert auch soweit ganz prächtig. Nur bei einer sehr großen Anzahl von Records (z.B. 100.000 Einträge im Array) dauert es relativ lange, alle Records herauszusuchen. Ich bin jetzt am überlegen, ob es sinn macht, anstelle eines selbstgebastelten dynamischen Arrays tList zu verwenden und die einzelnen Einträge mit AddObject ranzukleben. :gruebel: Würde es hier auch einen Geschwindigkeitsvorteil bringen, anstelle von tList tHashedStringList zu verwenden? Oder hat jemand eine Idee, wie ich das Array performanter durchsuchen kann? Greetings, Gerald |
Re: Bestimmte Records aus einem Array heraussuchen
Hi,
ob du mit TList schneller bist kann ich auch nicht sagen. Ich verwende aber immer TList oder TStringlist in einer eigenen Klasse für solche Sachen. Das eigentlich deshalb, weil man ne menge Zeit beim proggen spart. Wenn ich dan nach einem Parameter suchen muß verwende ich vorwiegend TStringList. Der Vorteil ist dann, wenn ich den Rekord einfüge mache ich folgendes:
Delphi-Quellcode:
Somit kann ich recht komfortabel über Indexof suchen und mir dann mittels erhaltenen Index den passenden Record holen. Für "meinen Suchparameter" sollte dann aber eine Eindeutigkeit gegeben sein, oder man muß sich dann durch die Ergebnisse durchackern.
MyList.Add('mein Suchparameter', MyRecord);
Diese Art war in der Regel für alle meine Anwendungsfälle ausreichend und schnell genug. Gruß oki |
Re: Bestimmte Records aus einem Array heraussuchen
gibt es denn nicht die möglichkeit beim erstellen des arrays eine vorsortierung zu machen, dann brauchst du nicht alles zu durchsuchen!
|
Re: Bestimmte Records aus einem Array heraussuchen
Zitat:
|
Re: Bestimmte Records aus einem Array heraussuchen
Zitat:
Greetings, Gerald |
Re: Bestimmte Records aus einem Array heraussuchen
Zitat:
Endknoten tragen die Info zu einer Datei (Dateiname, Datum, Grösse, ...), während die Zwischenknoten nur die Info zum Verzeichnis trägt. Damit wird der Speicherverbrauch für tiefe Verzeichnis drastisch reduziert und die Gefahr dass Speicherplatz in die SWAP-Datei ausgelagert wird verringert. |
Re: Bestimmte Records aus einem Array heraussuchen
Zitat:
|
Re: Bestimmte Records aus einem Array heraussuchen
Moin Leute :hi:
Bei den Datenmengen kann man doch schon eine Datenbank nehmen. Wenn der Speicher dick genug ist, würde ich kbmMemTable verwenden. Hast dann Index zur Hand und es geht fix. Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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