AGB  ·  Datenschutz  ·  Impressum  







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

Neue Klasse soll Werte übernehmen.

Ein Thema von DasZiesel · begonnen am 25. Jan 2008 · letzter Beitrag vom 26. Jan 2008
Antwort Antwort
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#1

Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 09:28
Hiho,

ich habe folgende Klassenstruktur in meinem Projekt.
Delphi-Quellcode:
type
    TItem = class(TCollectionItem)
    private
      FValue1: byte;
      FValue2: int64;
      ...
      FValueX: String;
      ...
    public
      property Wert1: BYTE read FValue1;
      property Wert2: INT64 read FValue2;
      ...
      property WertX: String read FValueX;
    end;
    
    
    ...
    
    TProgressItem = class(TItem)
    private
     ...
    public
      constructor Create(aItem: TItem);
      ...
      property <Einige neue Schlüssel>
      ...
    end;

...

implementation

...
    
constructor TProgressItem.Create(aItem: TItem);
begin
  inherited ...
   
  ...
  
  TItem(self) := aItem;
end;
Mir geht es nun darum das ich beim erstellen der Klasse TProgressItem gern die
Daten aus einem TItem übernehmen möchte. Dies mache ich Moment mit

  TItem(self) := aItem; dies funktioniert zwar auch, aber irgendwie kommt mir dieser Aufruf seltsam vor. Daher
meine Frage, ist dieser Aufruf konform oder gibt es eine andere, elegantere,
sichere Methode?

Danke im voraus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.546 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 09:30
Assign
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 09:33
Ging ja schnell, ja mit Assing habe ich probiert, aber da wirft er mir einen EConvertError aus.
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 10:09
Irgendwie scheint dies wohl nicht so funktionieren wie ich möchte. Wenn ich TProgressItem freigebe gibt er ja auch automatisch TItem frei, so das ich eine Exception auslöse. Ist ja eigentlich logisch.

Darum meine Frage wie kann ich einer Subklasse die Werte übergeben ohne diese Manuell im Create Aufruf einzuhämmern.
  Mit Zitat antworten Zitat
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#5

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 11:20
Du musst latuernich die procedure assign bei Dir erstellen, die die Zuweisungen implementiert
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 12:53
omg, das habe ich mir schon fast gedacht. Für jede Property darf ich nun eine Zuweisung schreiben. Das muss doch auch irgendwie anders gehen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.546 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 12:56
Zitat von DasZiesel:
Das muss doch auch irgendwie anders gehen.
Nicht, dass ich wüsste. Luckie hatte AFAIR vor einiger Zeit auch das Problem.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 13:33
Überschreibe mal in deiner Klasse TItem die protected Methode AssignTo mit folgendem:
Delphi-Quellcode:
Uses TypInfo
...
procedure TItem.assignto(Dest:TPersistent);
var count,i:integer;
    List:PProplist;
    Info:PPropInfo;
begin
  count:=GetPropList(self,List);
  try
    for i:=0 to count-1 do
    begin
      Info:=List^[i];
      setpropvalue(dest,Info^.Name,getpropvalue(self,Info^.Name));
    end;
  finally
    freemem(list);
  end;
end;
Dann dürftest du Assign verwenden können und wenn wir Glück haben werden alle Published Properties kopiert.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Neue Klasse soll Werte übernehmen.

  Alt 25. Jan 2008, 14:07
Danke, werde ich gleich einmal testen.
  Mit Zitat antworten Zitat
Benutzerbild von DasZiesel
DasZiesel

Registriert seit: 26. Dez 2004
Ort: Leipzig
58 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Neue Klasse soll Werte übernehmen.

  Alt 26. Jan 2008, 07:37
Habe es nun auf eine andere Weise erledigt, da ich nicht die Zeit hatte mich länger an diesem Problem festzuharken. Werde mich aber bei Gelegenheit nocheinmal genauer damit beschäftigen. Danke an alle.
  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:53 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