Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Einige nützliche Dateifunktionen

  Alt 25. Nov 2003, 16:19
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
$2B or not $2B
  Mit Zitat antworten Zitat