Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Objekt Typ feststellen und gleichen Typ neu erstellen? (https://www.delphipraxis.net/134029-objekt-typ-feststellen-und-gleichen-typ-neu-erstellen.html)

moelski 14. Mai 2009 07:47


Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Moin !

Nachdem mein RTTI nun funktioniert habe ich noch folgendes Problem:

Angenommen ich habe die Serie (TFastLineSeries) und ich möchte ein Objekt vom selben Typ erstellen. Dann würde man eine Zeile nutzen ala
Delphi-Quellcode:
var series1: TChartSeries;
begin
  series1 := TFastLineSeries.Create(nil);
Wie kann ich das universell hinkriegen?
Also Typ bestimmen und dann mit dem ermittelten Typen die Serie erstellen?

Die Variable series1 passt jedenfalls für alle Typen:
Zitat:

TChartSeries is the ancestor abstract class of every chart series type.

guinnes 14. Mai 2009 08:06

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Sollte tun :
Delphi-Quellcode:
  lSerie := TChartSeries(Instanz.ClassType).Create(Self);

moelski 14. Mai 2009 08:15

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Moin !

Delphi-Quellcode:
var series1: TChartSeries;
begin
  series1 := TChartSeries(Chart1[0].ClassType).Create(Self);
  Chart2.AddSeries(series1);
Chart1 = Qullchart ...

Das führt leider zu einer Exception:
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 8D208964. Lesen von Adresse 8D208964'.

guinnes 14. Mai 2009 09:10

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Du hast leider recht, ich such weiter

Hawkeye219 14. Mai 2009 09:11

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Hallo,

vielleicht kann man das Problem mit Hilfe eines Streams lösen: klick

@guinnes
ClassType liefert eine Klassenreferenz (class of TObject), keine Instanz (TObject). Der Typecast kann also so nicht funktionieren.

Gruß Hawkeye

mirage228 14. Mai 2009 09:14

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Vielleicht gehts so?

Delphi-Quellcode:
type
  TChartClass = class of TChartSeries
var
  series1: TChartSeries;
begin
  series1 := TChartClass(Chart1[0].ClassType).Create(Self);
  Chart2.AddSeries(series1);
Viele Grüße

chaosben 14. Mai 2009 09:16

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
So gehts bei mir:

Delphi-Quellcode:
var
  ser2 : TChartSeries;
begin
  ser2 := TChartSeriesClass(Chart1.SeriesList[0].ClassType).Create(Chart1);
  Chart1.AddSeries(ser2);
end;

guinnes 14. Mai 2009 09:33

Re: Objekt Typ feststellen und gleichen Typ neu erstellen?
 
Zitat:

Zitat von Hawkeye219
@guinnes
ClassType liefert eine Klassenreferenz (class of TObject), keine Instanz (TObject). Der Typecast kann also so nicht funktionieren.

Stimmt, der Cast war falsch :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 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