Announcement

Collapse
No announcement yet.

Suchen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Suchen

    Hallo Leute wenn ich ein Verzeichniss habe mit einer menge Daten die alle so aussehen data.001, data.002 data.003 usw. Nun möchte ich die aktulle Datei sprich die Datei mit der höchsten Zahl haben, kann mir jemand ein beispiel geben wie ich da am besten dran komme, damit ich auch die Größe zahl bekomme. Ist bestimmt ne Blöde frage weil es einfach ist, aber ich lerne es ja noch....

    Vielen Dank.. Gruß Christian
    P.S habe bis jetzt FindFirst usw. weiss nur nicht genau wie ich es am besten mache...

  • #2
    Folgende Function liefert Dir die Datei mit der nummerisch größten Dateierweiterung. Du kannst Sie wie folgt aufrufen: <br><br>

    dateiname := gEXE('data.*', 'c:\temp\');<br>
    Dateiname wäre dann z.B. data.189<br><br>
    dateiname := gEXE('data.T*', 'c:\temp\');
    Dateiname wäre dann z.B. data.t67<br><br>

    function gEXE(filename : string; path : string):string;<br>
    var<br>
    SearchRec : TSearchRec;<br>
    tmpnbr : integer;<br>
    tmpnbr1 : integer;<br>
    fehler : integer;<br>
    <br>
    begin<br>
    tmpnbr := 0;<br>
    tmpnbr1 := 0;<br>
    if FindFirst(path + filename, faAnyFile, SearchRec) = 0 then<br>
    begin<br>
    val(copy(SearchRec.Name, length(filename), length(SearchRec.Name) - length(filename) +1), tmpnbr, fehler);<br>
    if (fehler = 0) and<br>
    (tmpnbr > tmpnbr1) then gEXE := SearchRec.Name;<br>
    tmpnbr1 := tmpnbr;<br>
    while FindNext(SearchRec) = 0 do<br>
    begin<br>
    val(copy(SearchRec.Name, length(filename), length(SearchRec.Name) - length(filename) +1), tmpnbr, fehler);<br>
    if (fehler = 0) and<br>
    (tmpnbr > tmpnbr1) then gEXE := SearchRec.Name;<br>
    tmpnbr1 := tmpnbr;<br>
    end;<br>
    end<br>
    else<br>
    gEXE := 'Keine Datei gefunden!!!';<br>
    end;<br&gt

    Comment


    • #3
      Bleibt die Dateiendung bei 3 Stellen? Dann würde eine einfache <b>for</b>-Schleife schon ausreichen, die den Zähler hochzählt, in Form bringt (3stellig) und prüft, ob die Datei vorhanden ist. Wenn nicht, Zähler um Eins verringern und die Datei laden.

      Oder gleich von 999 abwärts zählen. )

      Gruß,
      Mathias

      Comment


      • #4
        Super Danke für die Antwort, werde es mal so versuchen bzw. Testen vieleicht guckt ihr in 1-2Stunden nochmal in das Topic falls ich dazu noch Fragen habe,m vielen Dank

        Gruß Christia

        Comment


        • #5
          Teste doch erst und schreib danach den Dank oder die Bitte für weitere Lösungen. Das ist IMHO effizienter.

          Comment


          • #6
            was besser ist, kommt drauf an wie die anforderungen aussehen.... meine function hat den vorteil, das es *.000, *.a00 und *.aa0 kann. wenn es mehrere hundert dateien (ab 501) sind, ist natürlich die for-schleife 999 downto 000 schneller. die frage ist, in welche rahmenbedingung da ist, und ob wirklich jede zehntel sekunde zählt.<br>
            <br> ausserdem "Einem geschenkten Gaul, schaut man nicht ins Maul" ;-) ;-)
            <br><br> Bye Fran

            Comment

            Working...
            X