Zitat von
Spider:
Wie könnte man das ganze kürzen:
Delphi-Quellcode:
if (Pos('.asm', FileName) > 0) then
GetDoc.Code.Highlighter := SynAsm
else
if (Pos('.cs', FileName) > 0) then
GetDoc.Code.Highlighter := SynCS
if (Pos('.c', FileName) > 0) or
(Pos('.cpp', FileName) > 0) or
(Pos('.h', FileName) > 0) or
(Pos('.hpp', FileName > 0) then
GetDoc.Code.Highlighter := SynCpp
Das ist jetzt nur ein kleines Stück davon. Das geht so noch weiter. Wie kann man das kürzen? Geht das überhaupt?
Ja, nämlich wenn man vorher noch eine Hilfsfunktion deklariert:
Delphi-Quellcode:
function StrIdx(str: string; strArr: array of string): Integer;
var si: Integer;
begin
Result:= -1;
for i:=0 to High(strArr) do
if str= strArr[si] then begin
Result:= si;
Break;
end;
end;
...
//Abfrage
case StrIdx( Endung, ('.asm','.cs','.c','.cpp','.h','.hpp')) of
0: GetDoc.Code.Highlighter := SynAsm;
1: GetDoc.Code.Highlighter := SynCs;
2..5: GetDoc.Code.Highlighter := SynCpp;
end;
Die
string-Varaible
Endung muss dann allerdings schon die Dateieindung enthalten, was man ja mit ExtractFileExt-Funktion machen kann.
Statt ('.asm','.cs','.c','.cpp','.h','.hpp') zu verwenden, könnte man auch eine Array of string-Konstante deklarieren und diese verwenden.
MfG
Binärbaum
//Edit: Da war noch ein Fehler im Code.