Es tut mir leid, aber ich falle auch mal über diese Codes her.
Mal abgesehn davon, das es schon fertige Funktionen in Delphi gibt, sind diese Codes auch noch extrem ineffizient.
Oder ist noch keinem aufgefallen, das verschiedene Befehle sinnloserweise abgearbeitet werden?
Gegen UeberpruefeSlash kann mal nicht sagen, das ist schon nicht schlecht gemacht.
Wobei das so schon etwas besser währe:
Delphi-Quellcode:
Function UeberpruefeSlash(Const Pfad: String): String;
Begin
If (Length(Pfad) > 0) AND (Pfad[Length(Pfad)] <> '\') Then
Result := Pfad + '\'
Else
Result := Pfad;
End;
sonst aber nicht schlecht.
Nehmen wir uns aber mal GetFileName vor:
Delphi-Quellcode:
Function GetFileName(Const FileName: String): String;
Var I, S: Integer;
Begin
S := 0;
For I := Length(FileName) downto 1 do
IF S = 0 Then Begin
If FileName[I] = '\' Then S := I;
Result := Copy(FileName, S + 1, Length(FileName) - S + 1);
End;
End;
Bei FileName = "C:\Test\Dat.ei" kommt dann sowas raus:
(hab mal versucht die Zeilen in ihrer Abarbeitungsreihenfolge aufzuschreiben)
Delphi-Quellcode:
For I := ... (* I = 14 *)
IF 0{S} = 0 Then Begin
If 'i'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 13 *)
IF 0{S} = 0 Then Begin
If 'e'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 12 *)
IF 0{S} = 0 Then Begin
If '.'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 11 *)
IF 0{S} = 0 Then Begin
If 't'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 10 *)
IF 0{S} = 0 Then Begin
If 'a'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 9 *)
IF 0{S} = 0 Then Begin
If 'D'{FileName[I]} = '\' Then ...
Result := 'C:\Test\Dat.ei'{Copy(FileName, 0 + 1, 14 - 0 + 1)};
End;
For I := ... (* I = 8 *)
IF 0{S} = 0 Then Begin
If '\'{FileName[I]} = '\' Then S := 8{I};
Result := 'Dat.ei'{Copy(FileName, 8 + 1, 14 - 8 + 1)};
End;
For I := ... (* I = 7 *)
IF 0{S} = 8 Then ... (* FileName[7] = 't' *)
For I := ... (* I = 6 *)
IF 0{S} = 8 Then ... (* FileName[6] = 's' *)
For I := ... (* I = 5 *)
IF 0{S} = 8 Then ... (* FileName[5] = 'e' *)
For I := ... (* I = 4 *)
IF 0{S} = 8 Then ... (* FileName[4] = 'T' *)
For I := ... (* I = 3 *)
IF 0{S} = 8 Then ... (* FileName[3] = '\' *)
For I := ... (* I = 2 *)
IF 0{S} = 8 Then ... (* FileName[2] = ':' *)
For I := ... (* I = 1 *)
IF 0{S} = 8 Then ... (* FileName[1] = 'C' *)
- Result wird ständing neu gesetzt.
- selbst wenn das Ergebnis gefunden wurde, wird die Schleife noch bis zum Ende ausgeführt
(bei langen Verzeichnissen, ist das schon ein ganzes Stückchen)
- ...
http://www.FrankNStein.de/Smiley-Kuss.gif * *
http://www.FrankNStein.de/Smiley-Spinne.gif * * *
http://www.FrankNStein.de/Smiley-Winken.gif