hi,
die möglichkeit von Muetze1 ist leider so um die 60% langsamer (bei 1000000 durchläufen)...
hier die wertetabelle:
meine möglichkeit: ~ 0,835528537844894
Muetze1's: ~ 1,40521434986849
Christian Seehase's: ~ 0,802533841591599
und die 4. aus allen: ~ 0,440150074939692
hier ist sie (sogar mit mehr dateitypen):
Delphi-Quellcode:
function GetImgIndex(
const lExt:
string) : Byte;
type
TcsExtToDW =
packed record
case byte
of
0 : (sExt :
string[4]);
1 : (bDummy : byte;
dwExt : DWORD);
end;
var
etdWork : TcsExtToDW;
i: Integer;
begin
RESULT := 17;
etdWork.dwExt := 0;
i := LastDelimiter('
.'+PathDelim+DriveDelim, lExt);
if (i > 0)
and (lExt[i] = '
.')
then begin
etdWork.sExt := LOWERCASE(Copy(lExt, i+1, MaxInt));
case etdWork.dwExt
of
$00657865 : Result := 6;
// exe
$0067706A,
// jpg
$6765706A,
// jpeg
$00706D62,
// bmp
$00666967,
// gif
$00676E70 : Result := 7;
// png
$006D7468,
// htm
$6C6D7468 : Result := 8;
// html
$00747874,
// txt
$00696E69,
// ini
$00666E69,
// inf
$00737363 : Result := 9;
// css
$00726172,
// rar
$0070697A,
// zip
$00626163,
// cab
$00656361 : Result := 10;
// ace
$0033706D,
// mp3
$00766177,
// wav
$0067676F,
// ogg
$0064696D,
// mid
$00616D77,
// wma
$00616D72 : Result := 11;
// rma
$0067706D,
// mpg
$6765706D,
// mpeg
$0065706D,
// mpe
$00766D77,
// wmv
$00697661,
// avi
$00667361,
// asf
$00766F6D,
// mov
$00006D72 : Result := 12;
// rm
$00636F64,
// doc
$00667472,
// rtf
$00666470,
// pdf
$00747070,
// ppt
$00737070 : Result := 13;
// pps
$00706C68,
// hlp
$006D6863 : Result := 14;
// chm
$00667773 : Result := 15;
// swf
$006B6E6C : Result := 16
// lnk
end;
end;
end;
bis dateitypen kommen, die mehr als 4 zeichen haben, oder es noch eine schnellere möglichkeit gibt, nehme ich die lösung!!
danke!!!
edit: noch ne frage - WARUM IST ANSILOWERCASE LANGSAMER ALS LOWERCASE????
edit2: und wie macht das der explorer???