OK, jetzt hab ichs:
Man muss nicht die IOHandler ableiten, sondern die TIdFTP.
Delphi-Quellcode:
function TMyIdFTP.SendCmd(AOut: string; const AResponse: array of SmallInt) : SmallInt;
var i : integer;
begin
Result:= inherited SendCmd(AOut,AResponse);
if Assigned(FRichEdit)then//FRichEdit vom Typ TRichEdit
begin
//Befehl mitloggen, Farbe Blau
FRichEdit.SelAttributes.Color:=clBlue;
FRichEdit.SelStart:=Length(FRichEdit.Lines.Text);
FRichEdit.Lines.Add('Befehl: '+aout);
FRichEdit.SelLength:=Length('Befehl: '+aout);
//Antworten mitloggen, Farben: Grün bei positive, Rot bei Negativer Antwort
for i:= 0 to Pred(LastCmdResult.FormattedReply.Count)do
begin
if LastCmdResult.NumericCode div 100 < 4 then
FRichEdit.SelAttributes.Color:=clGreen
else FRichEdit.SelAttributes.Color:=clred;
FRichEdit.SelStart:=Length(FRichEdit.Lines.Text);
FRichEdit.Lines.Add('Antwort: '+LastCmdResult.FormattedReply.Strings[i]);
FRichEdit.SelLength:=Length('Antwort: '+LastCmdResult.FormattedReply.Strings[i]);
end;
end;
end;
Zu beachten ist, das die TIdFTP drei SendCmd Funktionen hat, von denen jedoch nur eine virtuell, also ableitbar ist.
Ist sicher noch etwas unschön, aber es erfüllt den Zweck