TStringList Filtern



  • Hallo,
    ich programmiere unter CodeGear 2009. Dort bekomme ich über TADOConnection->GetTableNames() eine TStringList mit den vorhandenen Tabellennamen. Diese möchte ich jetzt auf verschiedene Werte filtern, wobei ich Platzhalter verwende. So sollen in meiner TStringList beispielsweise nur Namen stehen, die mit "ABC_" beginnen. Aktuell gehe ich dazu die Liste in einer for-Schleife durch und überprüfe jeden einzelnen Wert mit pos(). Gibt es da nicht etwas eleganteres? Vielleicht etwas in der Art: MyStringList->Filter("ABC_*")

    Gruß, Heimelchen



  • Heimelchen schrieb:

    ich programmiere unter CodeGear 2009... TStringList...

    Falsches Forum => VCL (C++ Builder) wäre richtig. Würde ein Moderator bitte diesen Thread verschieben?



  • Alternativ vielleicht eine ComboBox mit Autovervollständigung, statt der StringList? 😕



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    TStrings (die Basis von TSTringList) hat keinen speziellen Filter-Mechanismus. Den must du wirklich selber implementieren.

    bis bald
    akari



  • Ich hab es befürchtet.

    Hintergrund ist, dass ich meine Datenbankverbindung von BDE auf ADO umschreibe. Bei BDE hat die Tabelle die Methode Table->Session->GetTableNames() (oder so ähnlch, krieg das jetzt aus dem Kopf nicht hin), bei der man einen Pattern als Einschränkung für die zurückgegebenen Tabellennamen angeben kann. Das ADO-Pendant ADOConnection->GetTableNames() hat das leider nicht. 😞



  • Hi,

    wenn Du die Liste in eine Datenbanktabelle umleitest kannst Du mit Like eine Filterbedigung setzen. Aber ob das nun besser ist?

    Der Grund bei der BDE ist ein ganz einfacher, da waren die Tabellen (zumindest bei dBase und Paradox wirklich einzelne Dateien, und da musste gefiltert werden, damit Du nicht auf einmal ne Exe als DB aufmachen konntest... Aber in Access stehen nur die Tabellen drin, die auch in der Datenbank wirklich drin sind.
    Eventuell kannst Du dir helfen, wenn du die gebrauchten Tabellen als Viev gestaltest wo der Erste Buchstabe über zulässigkeit auskunft gibt oder als Proceduraufrufe, dann kannst Du mit GetProzedureNames alle von Dir angelegten Proceduren listen, die dann jeweils eien Select.. Befehl enthalten...

    Gruß Mümmel



  • Das ist nicht besser 🙂


Log in to reply