AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Object teilweise kopieren

Ein Thema von MrSpock · begonnen am 2. Jun 2005 · letzter Beitrag vom 7. Jun 2005
Antwort Antwort
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#1

Object teilweise kopieren

  Alt 2. Jun 2005, 10:09
Hallo,

ich habe zwei Objekte Ob1 und Ob2 derselben Klasse und möchte z.B. die ersten 50 Byte des ersten Objects in das zweite kopieren. Das kunktioniert zwar mit:

Move(Pointer(Ob1)^, Pointer(Ob2)^, 50); Ist aber so äußerst unschön. Muss ich dazu eine Methode für die Klasse schreiben, die dann die ersten Eigenschaften Feld für Feld über eine Zuweisung kopieren oder gibt es da eine elegantere Möglichkeit?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2

Re: Object teilweise kopieren

  Alt 2. Jun 2005, 10:13
Wenn du mir erklärst, wie du auf die Forderung _50 Bytes_ zu kopieren kommst, kann ich auch verstehen, warum dass unschön sein soll. Wenn du schon so ne komische Anforderung hast, ist dein Ansatz schon irgendwie logisch. Wenn einfach die ersten Felder kopiert werden sollten, würde ich das wie schon vorgeschlagen über eine Funktion machen, die Feld für Feld übernimmt.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Object teilweise kopieren

  Alt 2. Jun 2005, 10:52
Hallo nailor,

ja, es ging tatsächlich darum die ersten Felder zu kopieren. Ich habe es jetzt mit einer Methode gemacht, da ich es nicht über's Herz gebracht habe, den anderen Code hinzuschlonzen .
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: Object teilweise kopieren

  Alt 2. Jun 2005, 10:55
Delphi-Quellcode:
type
  ICloneable = interface
    function Clone: TObject;
  end;

type
  TDeineKlasse = class(TInterfacedObject, ICloneable)
  private
    FInteger: integer;
    FString: string;
    FDouble: double;
  public
    function Clone: TObject;
    property AsInteger: integer read FInteger write FInteger;
    property AsString: string read FString write FString;
    property AsDouble: double read FDouble write FDouble;
  end;

function TDeineKlasse.Clone: TObject;
begin
  Result := TDeineKlasse.Create;
  with TDeineKlasse(Result) do begin
    AsInteger := Self.AsInteger; // oder Self.FInteger;
    AsString := Self.AsString;
    AsDouble := Self.AsDouble;
  end;
end;

... so würd ichs machen

var
  xClone: TDeineKlasse;

begin
  xClone := TDeineKlasse(deineOriginalKlasse.Clone);
end;
öhm ja
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: Object teilweise kopieren

  Alt 3. Jun 2005, 15:48
das ist ja das mit der funktion, die die ersten felder übergibt.

dein code erinnert mich irgendwie so an .NET...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#6

Re: Object teilweise kopieren

  Alt 7. Jun 2005, 08:52
in .NET wirds ja auch üblicherweise so gemacht -
  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 06:01 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