AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigenschaften von TidHTTP auf anderes TidHTTP übertragen
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

Ein Thema von Sascha L · begonnen am 27. Jun 2006 · letzter Beitrag vom 28. Jun 2006
Antwort Antwort
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 10:34
Halli,

habe zwei TidHTTP-Komponenten. Wie kann ich die eingstellten Werte der ersten Komponente am einfachsten auf die zweite übertragen?

Wenn ich Assign benutze, bekomme ich eine AV.

Wenn ich z.B. folgendes mache:

Delphi-Quellcode:
var
tmpHTTP: TIdHTTP;
begin
 tmpHTTP := TidHTTP.Crate;
 tmpHTTP := AnderesIdHTTP;
 tmpHTTP.Free;
end;
Dann wird auch "AnderesIdHTTP" freigegeben.

Komm ich nicht drum rum, alle Eigenschaften manuell zu zuweisen?

Gruß
Sascha
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Stefan Hueg
Stefan Hueg

Registriert seit: 13. Jun 2004
Ort: Gießen
187 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 12:57
Vermutlich nicht, nein. Zumindest kenne ich keine Lösung
Stefan Hueg
  Mit Zitat antworten Zitat
Xtra

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

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 13: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
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 13:46
nein es geht auch einfacher mit assign muss es gehen

Ist dein AnderesIdHTTP überhaupt schon initialiesiert also hast du .create bevor du des übertragen willst ausgeführt worden?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Xtra

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

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 27. Jun 2006, 13:54
Ich kenne die Indy Komponenten nicht wirklich, weiss also nun nicht, ob da Assign sauber implementiert wurde.
Obigen Code bitte auf Wunschkomponente portieren.

Wuerde mich aber schwer wundern, wenn die Indyleute das wirklich vergessen haben sollten.

Ich nahm jedoch an, dass er die Kompo auf der Form plaziert hat, somit sollte .Create schon aufgerufen worden sein.
Achtung Fallstrick:
Annahme:
in Form1.OnCreate schreibst du:
tmpHTTP.Assign(form2.AnderesHTTP);
Das muss fehlschlagen, wenn form1 den Hauptformular ist, da form2 zu diesem Zeitpunkt noch nicht created wurde, evtl. rennst du ja gerade in sowas rein.
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Eigenschaften von TidHTTP auf anderes TidHTTP übertragen

  Alt 28. Jun 2006, 07:54
Die beiden idHTTP-Komponenten sind definitiv vorhanden.

Das mit Assign funktioniert aber leider auch definitiv nicht.


@Xtra: Das mit der Pointerzuweisung war mir auch klar, dass deshalb "beide" freigegeben werden.

Das mit dem Ableiten ist zwar ne gute Idee, aber das brauch ich dann auch nicht machen, wenn ich da im Prinzip ja denselben Code schreiben muss, denn ich sonst auch so schreiben könnte. Ich komm ja nicht drumherum, alle Eigenschaften gleich zu setzen.
Sascha
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz