AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Überprüfen ob String ein korrekter Dateifilter ist
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob String ein korrekter Dateifilter ist

Ein Thema von s.h.a.r.k · begonnen am 15. Mai 2005 · letzter Beitrag vom 15. Mai 2005
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Überprüfen ob String ein korrekter Dateifilter ist

  Alt 15. Mai 2005, 02:01
Hallo!

Ich hab schon nach diesem Topic gesucht aber leider noch nix dazu gefunden: Und zwar würde mich es mich interessieren, ob es eine Funktion gibt, die mir überprüft ob eine String ein korrekter Dateifilter ist!? Also wenn z.B. in einem String das folgende steht sollte er TRUE ausspucken:
Code:
Textdatei (*.txt)|*.txt|Konfigurationsdatei (*.cfg)|*.cfg|Registrierungsschlüssel (*.reg)|*.reg|Protokoll (*.log)|*.log|Informationsdatei (*.nfo)|*.nfo|HTML-Datei (*.html)|*.html|PHP-Datei (*.php)|*.php
Vielen Dank schon mal!

mfg Armin
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Überprüfen ob String ein korrekter Dateifilter ist

  Alt 15. Mai 2005, 02:27
Tut mir leid, dass ich meine Frage mir selbst so schnell beantworte! Hab mir nämlich grad recht lange Gedanken drüber gemacht und bin zu folgender Funktion gekommen, die ich auch schon getestet habe! Ich bitte euch aber diese Funktion mal auf eventuelle Fehler durchzuschauen, da es doch schon halb vier in der Nacht ist

Delphi-Quellcode:
function CheckFileExtensions(Extensions: String):Boolean;
var
  Ext, title, filter, s: String;
begin
  Result := False;
  Ext := Extensions;
  while length(Ext) > 0 do begin
    title := '';
    filter := '';
    title := copy(Ext, 1, pos('|', Ext));
    if (title = '') then begin
      Result := False;
      break;
    end else Result := True;

    delete(Ext, 1, pos('|', Ext));
    if (pos('|', Ext) = 0) then begin
      filter := Ext;
      s := copy(filter, 3, length(filter));
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
      end
      else Result := True;
      break;
    end else begin
      filter := copy(Ext, 1, pos('|', Ext) - 1);
      s := copy(filter, 3, length(filter));
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
        break;
      end else Result := True;
      delete(Ext, 1, pos('|', Ext));
    end;
  end;
end;
Die Funktion prüft nur ob der Titel aus mindestens einem Zeichen besteht und der Dateifilter wie folgt aussieht *.xxx (xxx steht für einen String mit der Mindestlänge von 1). Wenn ihr noch Verbesserungsvorschläge habt, dann könnt ihr die hier posten! Ansonsten bitte ich nen Moderator diesen Thread in die Code-Lib aufzunehmen thx

mfg Armin
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: Überprüfen ob String ein korrekter Dateifilter ist

  Alt 15. Mai 2005, 11:36
Würde die function noch umbenennen zB. in CheckFileDialogFilter(Filter: String):Boolean oder so.
ist soweit Ok denke ich bis auf:

Delphi-Quellcode:
function CheckFileExtensions(Extensions: String):Boolean;
var
  Ext, title, filter, s: String;
begin
  Result := False;
  Ext := Extensions;
  while length(Ext) > 0 do begin
    title := '';
    filter := '';
    title := copy(Ext, 1, pos('|', Ext));
    if (title = '') then begin
      Result := False;
      break;
    end else Result := True;

    delete(Ext, 1, pos('|', Ext));
    if (pos('|', Ext) = 0) then begin
      filter := Ext;
      s := copy(filter, 3, length(filter));
      if Length(Filter) < 1 then begin // <-- ExtensionsStr = 'Textdatei (*.txt)|';
        Result := False; //
        break; //
      end; //
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
      end
      else Result := True;
      break;
    end else begin
      filter := copy(Ext, 1, pos('|', Ext) - 1);
      s := copy(filter, 3, length(filter));
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
        break;
      end else Result := True;
      delete(Ext, 1, pos('|', Ext));
    end;
  end;
end;
Matti
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

Re: Überprüfen ob String ein korrekter Dateifilter ist

  Alt 15. Mai 2005, 11:50
Das umbenennen ist sinnvoll - Habe die Funktion auch etwas spät in der Nacht geschrieben *gähn*

Wäre ja fast zu nem AccessViolationError gekommen! (Wenn ich nicht die Länge des eigentlichen Filters abfragen würde)

// Edit: Hab hier eine komplett funktionierende Version, die ohne Makel sein sollte..
Delphi-Quellcode:
function CheckFileExtensionFilter(Extensions: String):Boolean;
var
  Ext, title, filter, s: String;
begin
  Result := False;
  Ext := Extensions;
  while length(Ext) > 0 do begin
    title := '';
    filter := '';
    title := copy(Ext, 1, pos('|', Ext));
    if (title = '') then begin
      Result := False;
      break;
    end;

    delete(Ext, 1, pos('|', Ext));
    if (pos('|', Ext) = 0) then begin
      filter := Ext;
      s := copy(filter, 3, length(filter));
      if Length(Filter) < 1 then begin
        Result := False;
        break;
      end;
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
      end
      else Result := True;
      break;
    end else begin
      filter := copy(Ext, 1, pos('|', Ext) - 1);
      s := copy(filter, 3, length(filter));
      if ((filter[1] <> '*') or (filter[2] <>'.') or (length(s) < 1)) then begin
        Result := False;
        break;
      end else Result := True;
      delete(Ext, 1, pos('|', Ext));
    end;
  end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  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 15:07 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