Zitat von
Luckie:
Gerade Leerzeilen sind ein Zeichen dafür, dass man den Code aufteilen sollte, deswegen meine Aufteilung.
Oh ...
Also ich füge dich gerne auch einfach mal so ein ... hier mal ne rekursive Funktion:
Delphi-Quellcode:
procedure TFtpBrowser.ChangeDir (ADir: String);
begin
Working := True;
if (ADir = '.') or (ADir = '') then
begin
TriggerLogEvent('Receiving directory listing', etStatus);
FFiles.Clear;
CreateDirectoryListing;
TriggerLogEvent('Directory listing complete', etStatus);
end
else if ADir = '..' then
begin
if FDir.Text <> '/' then
begin
FDir.Items.Delete(FDir.ItemIndex);
FDir.ItemIndex := Pred (FDir.Items.Count);
FFtp.ChangeDir(FDir.Text);
end;
ChangeDir('.');
end
else
begin
if FDir.Items.IndexOf(ADir) > -1 then
begin
while FDir.ItemIndex <> Pred(FDir.Items.Count) do
FDir.Items.Delete(Pred(FDir.Items.Count));
end
else
if (copy(ADir, 1, 1) = '/') and (copy(FDir.Text, 1, 1) = '/') then
Delete(ADir, 1, 1);
if (copy(ADir, 1, 1) <> '/') and (copy(FDir.Text, 1, 1) <> '/') then
ADir := '/' + ADir;
if copy(ADir, length (ADir), 1) <> '/' then
ADir := ADir + '/';
FDir.ItemIndex := FDir.Items.Add(FDir.Text + ADir);
try
FFtp.ChangeDir(FDir.Text);
ChangeDir('.');
except
TriggerLogEvent('Could not open directory "' + FDir.Text + '"', etError);
end;
end;
Working := False;
end;
Naja - jedem das seine
(Mir hat in dem Projekt die Anzahl der Funktionen schon gereicht, jetzt noch Sachen in eigene 3-Zeiler auslagern und ich hätte beim Funktionsbaum nicht mehr durchgeblickt ...)