Irgendwie kann ich die Logic noch nicht nachvollziehen:
Delphi-Quellcode:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerContext;
const AUsername, APassword: string; var AAuthenticated: Boolean);
begin
if idftpserver1.active = true then
begin
AAuthenticated := False;
if ('test' = AUsername) and ('test' = APassword) then
begin
AAuthenticated := True;
ASender.HomeDir := '\\apollo\daten\edv\_tmp';
ASender.CurrentDir := '\\apollo\daten\edv\_tmp';
end;
end else AAuthenticated := False;
// We just set AAuthenticated to true so any username / password is accepted
// You should check them here - AUsername and APassword
//AAuthenticated := True;
end;
Warum prüfst du ob der ftpserver aktiv ist? Wenn er nicht aktiv ist würde doch dieses Ereignis nicht augelöst werden oder? Und warum vergleichst du active mit der constanten true? Was wäre wenn active 2 ist und somit wahr ist aber eben nicht true aber auch nicht false.
und warum setzt du AAuthenticated auf False vor dem Test anstelle ein "else" zu nehmen und gleichzeitig arbeitest du aber mit Else bei der äußeren Bedingung. Warum machst du es einmal so und einmal anders?