Entwickler-Ecke
Dateizugriff - Extension mit Wildcart prüfen?
Andre :-) - Fr 14.02.03 18:06
Titel: Extension mit Wildcart prüfen?
Hi,
ich weise einem String folgenden Wert zu:
ExtractFileExt(sFile)
Nun möchte ich prüfen, ob es ein rar file ist.
Quelltext
1:
| if ExtractFileExt(sFile) = '.rar' then NewItem.ImageIndex := 3 |
Das geht. Aber ein rar kann ja auch bekanntlich mehrere Kinder haben:
r01,r02 ...
Kann mir jemand sagen, wie ich sowas prüfen kann.
Ich hatte mir was mit % überlegt, aber das geht net.
Danke
DaRkFiRe - Fr 14.02.03 21:00
Et voilà...
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function isRarExt (sFileName:STRING):BOOLEAN; begin S:=ExtractFileExt(sFileName); IF (UPCASE(S[1]) = 'R') AND (S[2] IN ['0'..'9']) AND (S[3] IN ['0'..'9']) THEN Result:=True ELSE Result:=False; end; |
Delete - Fr 14.02.03 23:11
Man spart sich die extra Abfrage von "RAR", wenn man die auch gleich noch berücksichtigt und die Funktion entsprechend erweitert:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function isRarExt (sFileName:STRING):BOOLEAN; begin S:=uppercase(ExtractFileExt(sFileName)); IF (S[1] = 'R') AND (S[2] IN ['A','0'..'9']) AND (S[3] IN ['R','0'..'9']) THEN Result:=True ELSE Result:=False; end; |
:)
AndyB - Fr 14.02.03 23:20
Und was passiert, wenn die Extension weniger als 3 Zeichen hat? Und ihr habt beide den führenden '.' vergessen.
Quelltext
1: 2: 3: 4: 5: 6: 7:
| function isRarExt(const FileName: string): Boolean; var S: string; begin S := LowerCase(ExtractFileExt(FileName)); Result := (Length(S) = 4) and (S[2] = 'r') and ( (S = '.rar') or ( (S[3] in ['0'..'9']) and (S[4] in ['0'..'9']) )); end; |
Delete - Sa 15.02.03 09:56
| AndyB hat folgendes geschrieben: |
| Und was passiert, wenn die Extension weniger als 3 Zeichen hat? |
Dann ist es wohl keine
RAR-Endung?! :roll:
Anonymous - Sa 15.02.03 11:43
| MathiasSimmack hat folgendes geschrieben: |
| Dann ist es wohl keine RAR-Endung?! :roll: |
Dein Quelltext greift aber trotzdem auf das dritte (erste, zweite) Zeichen des Strings zu. Zudem würde die Dateiendung "RARI" (etc.) ebenfalls True ergeben und ""R0R" .. "R9R" ebenfalls.
Gruß Tom
Delete - So 16.02.03 21:14
Richtig. Da habt ihr, du und AndyB, mit eurer Kritik recht. Aber das liegt wohl daran, dass ich -wenn ich es z.B. gezielt auf RAR-Archive abgesehen habe!- die jeweilige Datei öffnen und den Header auf die RAR-Kennung prüfen würde.
Das habe ich mal bei einem schon älteren Projekt erfolgreich benutzt. Das Tool war in der Lage, mit Hilfe von separaten Microdateien diverse Archivformate zu erkennen. Sprich: es ließ sich quasi unbegrenzt erweitern.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!