AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Platzhalter in Dateinamen bei FindFirst
Thema durchsuchen
Ansicht
Themen-Optionen

Platzhalter in Dateinamen bei FindFirst

Ein Thema von Freiwilderer · begonnen am 19. Okt 2010 · letzter Beitrag vom 19. Okt 2010
Antwort Antwort
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#1

Platzhalter in Dateinamen bei FindFirst

  Alt 19. Okt 2010, 13:35
Hi,
ich hab mal(wieder) ne frage.

Ich muss mehrere Datein einlesen, die unterschiedliche Dateinamenrichtlinien haben und in unterschiedlichen Ordnern liegen.
Jetzt hab ich mir dafür eine schleife gebaut, die alle relevanten ordner durchgeht und in den entsprechenden Ordnern einen jeweils anderen Dateinamens filter hat.
so weit so gut, läuft.
jetzt habe ich aber einen Dateifilter der so aussieht: '*LAB*.*'
das problem dabei ist, dass er zB die Dateien 'ALAB123.WIN'; 'LAB234.WIN' und '10LAB123.WIN';
einschließt.
er soll aber nur die '10LAB123.WIN' zulassen, sprich eine Datei, die vor dem LAB einen Integer wert hat.
gibt es dafür einen filter?
würde das gern über einen filter lösen, damit ich nicht anfangen muss den dateinamen auseinander zu pflücken.

über tips wäre ich dankbar,

vielen Dank im vorraus

mfg

Freiwilderer
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Platzhalter in Dateinamen bei FindFirst

  Alt 19. Okt 2010, 13:54
Nein geht nicht über den Filter, dass musst du im Nachhinein nochmals selber filtern.
Zum Prüfen könntest du dann RegEx benutzen

oder

Delphi-Quellcode:
function StringBefore( const SubStr, Str : string ) : string;
  var
    p : integer;
  begin
    p := Pos( SubStr, Str );
    if ( p = 0 ) then
      p := Length( Str )
    else
      p := p - 1;
    if ( p > 0 ) then
      Result := Copy( Str, 1, p )
    else
      Result := '';
  end;
und dann so prüfen
Delphi-Quellcode:
str := StringBefore( 'LAB', sr.Filename );
if StrToIntDef( str, 0 ) <> 0 then
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (19. Okt 2010 um 14:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Platzhalter in Dateinamen bei FindFirst

  Alt 19. Okt 2010, 14:31
FindFirst kenn nunmal nur die Platzhalter * und ?.
Es kann also nicht zwischen Buchstabe oder Zahl unterschieden werden.

'10LAB123.WIN' könnte man über '?*LAB?*.WIN' von 'LAB234.WIN' unterscheiden.
Aber 'ALAB123.WIN' würde sich nicht davon unterscheiden, da man so ja keine Buchstaben von Zahlen unterscheiden kann.


Lösung, du mußt erstmal alle Dateien auflisten und dann selber filtern.
Wie nun die Namen verglichen werden, ist dir überlassen und es gibt unmassen Möglichkeiten, wie z.B. das knuffige RegEx u.Ä.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (19. Okt 2010 um 14:34 Uhr)
  Mit Zitat antworten Zitat
Freiwilderer

Registriert seit: 26. Mai 2009
163 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Platzhalter in Dateinamen bei FindFirst

  Alt 19. Okt 2010, 15:03
hi,
danke, hatte mir schon sowas gedacht, da dateinamen nunmal strings sind,
aber gehofft, dass es da vielleicht doch ne möglichkeit gibt

ich werd das dann über nen späteren filter lösen

danke nochmals

mfg
  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 12:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz