Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   If-Schleifen-Haufen zusammenfassen (https://www.delphipraxis.net/79482-if-schleifen-haufen-zusammenfassen.html)

Klaus01 23. Okt 2006 15:40

Re: If-Schleifen-Haufen zusammenfassen
 
Delphi-Quellcode:
const
  FileType ='avi_mpg_mpeg_wmf';

if pos(s,FileType) <> 0 then
  ...
mein letzter Versuch.

Einen schönen Feierabend.

Grüße
Klaus

XeRo 23. Okt 2006 15:42

Re: If-Schleifen-Haufen zusammenfassen
 
Wow danke für die extrem schnellen antworten!
Besonders Letzte methode gefällt mir!
Vielen dank!

Die Muhkuh 23. Okt 2006 15:43

Re: If-Schleifen-Haufen zusammenfassen
 
Zitat:

Zitat von XeRo
Besonders Letzte methode gefällt mir!

Klaus' oder meine?

dino 23. Okt 2006 15:45

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...

Die Muhkuh 23. Okt 2006 15:47

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;

Cöster 23. Okt 2006 20:18

Re: If-Schleifen-Haufen zusammenfassen
 
Zitat:

Zitat von Klaus01
Delphi-Quellcode:
const
  FileType ='avi_mpg_mpeg_wmf';

if pos(s,FileType) <> 0 then
  ...

Hm, und wenn s = 'i_m'? Ich wage aber zu bezweifeln, dass das schneller ist, als die Methode mit den if-Abfragen. Im Gegenteil. So wie du es mit den if's machst, ist es schon das Beste, alternativ mit der Funktion à la Dino.

semo 23. Okt 2006 20:59

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.

malo 23. Okt 2006 21:22

Re: If-Schleifen-Haufen zusammenfassen
 
Zitat:

Zitat von computer-glossar.de
AnsiIndexText gibts aber noch nicht in delphi5 ...

Dann halt der Haudrauf-Weg.
Delphi-Quellcode:
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;
Aufruf wäre etwa so:
Delphi-Quellcode:
const
  FileTypes: array [0..4] of string = ('avi', 'mpg', 'mpeg', 'wmf', 'wmv');
//...
if InArray(s, FileTypes) then DoSomething;
Ist jetzt grob zusammen gezimmert ;)

Lannes 23. Okt 2006 21:23

Re: If-Schleifen-Haufen zusammenfassen
 
Hallo,

oder die Extensionen in eine Stringlist schreiben und dann mit IndexOf prüfen.

semo 23. Okt 2006 21:47

Re: If-Schleifen-Haufen zusammenfassen
 
Delphi-Quellcode:
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;
würd ich immer über ne while schleife lösen,
weil break sind nen "no go"
also:
Delphi-Quellcode:
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;
und das ganze könnte man dann ja noch um die möglichkeit erweitern auf groß/kleinschreibung zu achten oder nicht
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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.
Seite 2 von 3     12 3      

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