Einzelnen Beitrag anzeigen

Xtra

Registriert seit: 27. Jun 2006
2 Beiträge
 
#3

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 14:34
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.
  Mit Zitat antworten Zitat