gelöst - einlesen von 'zeilen' aus config datei in ein Array

  • Hallo zusammen,
    bestimmt stehe ich einfach nur auf dem Schlauch - aber mir gelingt es einfach nicht folgendes erfolgreich umzusetzen:

    Ich nutze die DynArray.au3 ,um Verzeichnisse zu durchsuchen, wobei einige unter dem Startpunkt liegende Verzeichnisse excluded werden.

    Das funktioniert einwandfrei !!!

    siehe Code


    Um das Ganze auch anderen Kollegen einfach zur Verfügung zu stellen, will ich die anzugebenden Parameter mittels einer cfg Datei hinterlegen und im Code mit Variablen arbeiten.
    Die cfg Datei sieht wie folgt aus (eigentlich ganz simpel):

    [StartVerzeichnisSuche]
    K:\Notesdat\

    [ExlcudeDirs]
    "x:\Verz\Exclude1\", "x:\Verz\Exclude2\", "x:\Verz\Exclude3\", "x:\Verz\Exclude4\", "x:\Verz\Exclude5\"

    [CountSuffix]
    4

    [SuffixSuche]
    .dic

    Das funktioniert auch bis auf einen entscheidenden Punkt. Nämlich die Übergabe der zu excludenden Verzeichnisse als Array bekomme ich nicht hin.
    Die Exclude Verzeichnisse werden nicht als separate einzelne Records im Array eingelesen, sondern als ein Record des Arrays mit allen Excludes in einem String (dazu siehe auch die 2 Anhänge)

    Die Challenge ist es also das (Ziel) Array korrekt zu 'erzeugen' - oder wie erkläre ich ein Trennzeichen, welches das Array versteht un die einzelnen Records erzeugt ?


    Danke Euch schon mal im voraus


  • Du musst den Rohstring natürlich noch zerlegen.

    Möglichkeit 1:
    Mit einen StringReplace die Anführungszeichen killen, dann per StringSplit ("," als Separator) in ein Array teilen und anschließend per StringStripWS die verbliebenen führenden und endenden Leerzeichen in den einzelnen Elementen killen.

    Möglichkeit 2:
    Per regulären Ausdruck zerlegen:

    AutoIt
    #include <Array.au3>
    
    
    $s_RAWString = '"x:\Verz\Exclude1\", "x:\Verz\Exclude2\", "x:\Verz\Exclude3\", "x:\Verz\Exclude4\", "x:\Verz\Exclude5\"'
    
    
    $a_Dirs = StringRegExp($s_RAWString, '(?:"(.+?))(?R)?(?:")', 3)
    _ArrayDisplay($a_Dirs)
  • Guten Morgen

    Danke für die Antwort - das mit dem RegEx ist klasse.
    Ich hatte in der Zwischenzeit auch schon einen Weg (mittels StringSplit) gefunden/ gebaut.
    Das hat mir keine Ruhe gelassen - so habe trotz 'häuslichen' Widerstands - gestern abend das gebaut.

    Allerdings werde ich Deine RegEx Lösung nutzen wollen - ist einfach smarter


    Danke nochmals

    Gruss
    ugt100 :klatschen::klatschen::klatschen:

  • Hi Aspirin Junkie,

    'tschuldige das ich nochmal störe - aber Dein WooDoo mit dem ReEx String macht mich fertig.

    Ich verstehe ehrlich gesagt das Ding nicht sorecht (wobei es einwandfrei funzt)

    Vielleicht kannst Du mir - wenn Zeit - das Ding mal in einzelnen Schritten erklären
    Fände ich toll


    DANKE
    Gruss
    ugt100

  • Nun das Pattern ist etwas finster.
    Ein rekursives RegEx - sowas bereitet mir selbst auch Kopfschmerzen.
    Ziel hier war die Anführungszeichen balanciert auszulesen.
    Ist hier aber eigentlich nicht nötig.

    Nimm folgendes Pattern das erfüllt den selben Zweck und ist schneller und einfacher: "(.+?)"
    Und vor allem ist es nachvollziehbar.

    Ein Tutorial zu RegEx findest du z.B. hier: RegEx Tutorial