![]() |
If-Schleifen-Haufen zusammenfassen
Also meine If Schleifen sehen im Moment etwa derartig aus:
Delphi-Quellcode:
Wie kann ich das vernünftiger machen?
if(s='avi')or
(s='mpg')or (s='mpeg')or (s='wmf')or (s=.....)... |
Re: If-Schleifen-Haufen zusammenfassen
Hi,
erstmal: if ist kein Schleifen Befehl :wink: ... Du könntest alle Dateiendungen in einem Array speichern und dann mit dem Operator IN abfragen, ob die Endung enthalten ist. Florian |
Re: If-Schleifen-Haufen zusammenfassen
nen array mit den dateiendungen bauen, danach mit ner for-schleife drübergehn & abfragen?
|
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
|
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
Delphi-Quellcode:
var
FileTypes : set of ['avi','mpg','mpeg','wmf'] if s in FileTypes then ... Grüße Klaus |
Re: If-Schleifen-Haufen zusammenfassen
Sowas geht nicht weil das kein Ordinaltyp ist wie ich letztens auch vom Compiler zu hören bekommen hab-.-^^
|
Re: If-Schleifen-Haufen zusammenfassen
Danke,
so sollte es aber funktionieren.
Delphi-Quellcode:
sorry geht auch so nicht.
var
FileTypes : set of (avi, mpg, mpeg, wmf) if s in FileTypes then ... Grüße Klaus |
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
|
Re: If-Schleifen-Haufen zusammenfassen
Schau dir mal
![]() Edit: Kleines Beispiel:
Delphi-Quellcode:
const
FileTypes: array [0..4] of string = ('avi', 'mpg', 'mpeg', 'wmf', 'wmv'); procedure Blabla(Ext: String); begin if AnsiIndexText(Ext, FileTypes) > - 1 then begin // MAch was mit mir :) end; end; |
Re: If-Schleifen-Haufen zusammenfassen
Also ich glaube nicht das sowas geht. Wenn es doch ohne großen Aufwand geht dann sagt mir Bescheid. Das wäre für mich eine kleine Sensation :) :firejump:
|
Re: If-Schleifen-Haufen zusammenfassen
Delphi-Quellcode:
mein letzter Versuch.
const
FileType ='avi_mpg_mpeg_wmf'; if pos(s,FileType) <> 0 then ... Einen schönen Feierabend. Grüße Klaus |
Re: If-Schleifen-Haufen zusammenfassen
Wow danke für die extrem schnellen antworten!
Besonders Letzte methode gefällt mir! Vielen dank! |
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
|
Re: If-Schleifen-Haufen zusammenfassen
kann man sich nicht ne boolean Prozedur schreiben, der man den Vergleichswert mit allen Möglichkeiten übergibt ( :kotz: genau), und true rauskriegt, wenn einer der Möglichkeiten= dem Vergleichswert sind...
|
Re: If-Schleifen-Haufen zusammenfassen
Hi dino,
das sollte wohl kein Problem darstellen:
Delphi-Quellcode:
function InArray(What: String; const Values: Array of String): Boolean;
begin Result := AnsiIndexText(What, Values) > - 1; end; |
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
|
Re: If-Schleifen-Haufen zusammenfassen
AnsiIndexText gibts aber noch nicht in delphi5 ...
alternativ erstelle man sich ein array of integer und eine funktion die man mit dem suchwort füttert, die dann das array durchläuft und den index bw true oder false zurückliefert. |
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
Delphi-Quellcode:
Aufruf wäre etwa so:
function InArray(s: string; const StrArray: array of string): boolean;
var i: integer; begin result := false; for i := 0 to high(StrArray)-1 do begin if s=StrArray[i] then begin result := true; break; end; end;
Delphi-Quellcode:
Ist jetzt grob zusammen gezimmert ;)
const
FileTypes: array [0..4] of string = ('avi', 'mpg', 'mpeg', 'wmf', 'wmv'); //... if InArray(s, FileTypes) then DoSomething; |
Re: If-Schleifen-Haufen zusammenfassen
Hallo,
oder die Extensionen in eine Stringlist schreiben und dann mit IndexOf prüfen. |
Re: If-Schleifen-Haufen zusammenfassen
Delphi-Quellcode:
würd ich immer über ne while schleife lösen,
function InArray(s: string; const StrArray: array of string): boolean;
var i: integer; begin result := false; for i := 0 to high(StrArray)-1 do begin if s=StrArray[i] then begin result := true; break; end; end; end; weil break sind nen "no go" also:
Delphi-Quellcode:
und das ganze könnte man dann ja noch um die möglichkeit erweitern auf groß/kleinschreibung zu achten oder nicht
function InArray(s: string; const StrArray: array of string): boolean;
var i: integer; begin result := false; i := 0; while (not Result) and (i < to high(StrArray)) do begin result := s=StrArray[i]; Inc(i); end; end;
Delphi-Quellcode:
function InArray(s: string; const StrArray: array of string; bCaseSensitiv: Boolean = false): boolean;
var i: integer; begin result := false; if not bCaseSensitiv then s := AnsiUpperCase(s); i := 0; while (not Result) and (i < to high(StrArray)) do begin if bCaseSensitiv then result := s=StrArray[i] else result := s=AnsiUpperCase(StrArray[i]); Inc(i); end; end; |
Re: If-Schleifen-Haufen zusammenfassen
Zitat:
Delphi-Quellcode:
Gruß Hawkeye
function InArray (const s: string;
const A: array of string; CaseSensitive: Boolean = False): Boolean; var i : integer; Same : function (const s1, s2: string): Boolean; begin if CaseSensitive then Same := AnsiSameStr else Same := AnsiSameText; Result := False; for i := 0 to High(A) do if Same(s, A[i]) then begin Result := True; Break; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz