Was spricht dagegen von TidHTTP abzuleiten und Assign zu overriden.
Die resultierende Klasse packst du dir in das
indy package und solltest dann TmyHTTP haben.
Pseudo-delphi-code:
Delphi-Quellcode:
type
TmyHTTP=class(TidHTTP)
private
protected
public
procedure Assign(Source:TPersistent);
published
end;
procedure TmyHTTP.Assign(Source:TPersistent);
begin
if(Assigned(source) and source.InheritsFrom(TidHTTP)) then
begin
Self.hostname:=(source as TidHTTP).Hostname;
(* ... hier eben die weiteren Sachen die du willst ... *)
end
else
inherited Assign(Source);
end;
Dein:
Delphi-Quellcode:
var
tmpHTTP: TIdHTTP;
begin
tmpHTTP := TidHTTP.Crate;
tmpHTTP := AnderesIdHTTP;
tmpHTTP.Free;
end;
Muss fehlschlagen, denn die Anweisung "tmpHTTP := AnderesIdHTTP;" ist nicht gleichbedeutend mit "tmpHTTP.Assign(AnderesIdHTTP)" da ersteres bewirkt bewirkt, dass tmpHTTP dasselbe Objekt referenziert wie AnderesHTTP(einfache Pointerzuweisung), während "tmpHTTP.Assign(AnderesIdHTTP)" den Inhalt der von AnderesIdHTTP referenzierten Instanz in die von tmpHTTP referenzierte kopiert.