Autor Beitrag
ANSIJoker
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 19.05.05 07:53 
Hallo,


ist es unter Delphi (.NET) irgendwie möglich, einen Typecast zu vollziehen?
Z.B. ein UInt32 auf ein UInt64.


Aber generell würde gerne eine Klasse auf einen anderen Klassentyp casten.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 19.05.05 07:57 
Ich hab es zwar noch nicht gemacht, aber gelesen, dass das ohne Probleme gehen soll.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  test1 : uint32;
  test2 : uint64;
begin
  test1 := 2005;
  test2 := test1;
end;

Umgekehrt gibt es natürlich Probleme, wenn die Zahl für uint32 zu groß ist.

Oder habe ich deine Frage jetzt falsch verstanden?
ANSIJoker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 19.05.05 08:01 
user profile iconjasocul hat folgendes geschrieben:
Ich hab es zwar noch nicht gemacht, aber gelesen, dass das ohne Probleme gehen soll.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  test1 : uint32;
  test2 : uint64;
begin
  test1 := 2005;
  test2 := test1;
end;

Umgekehrt gibt es natürlich Probleme, wenn die Zahl für uint32 zu groß ist.

Oder habe ich deine Frage jetzt falsch verstanden?



naja, ich such einen Weg, wie unter C# den neuen Typ aufzuzwingen, wie z.B.

// C#
UInt32 test32;
UInt64 test64;

test64 = (UInt64) test32; // expliziter type cast
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 19.05.05 08:06 
Ist in Delphi nicht erforderlich. Sobald die Zuweisung gemacht wurde, ist es gewandelt. Es wird ja keine Referenz der Variablen übergeben, sondern eine Kopie.
ANSIJoker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 19.05.05 08:13 
user profile iconjasocul hat folgendes geschrieben:
Ist in Delphi nicht erforderlich. Sobald die Zuweisung gemacht wurde, ist es gewandelt. Es wird ja keine Referenz der Variablen übergeben, sondern eine Kopie.


Es gibt jeoch ein Problem:

ich habe eine .NET DLL mit einer Klasse, die darin eine weitere Klasse birgt.


Um an die innere Klasse zu kommen, muss ich in C# un VB.NET das Objekt (äußere Klasse) mit dem inneren Klassentyp casten,
um an die Innereien zu kommen. Oder geht das in Delphi auch anders?? :?
ANSIJoker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 19.05.05 08:17 
habe jetzt eine Lösung gefunden:

(Object_Typ1 As Klassen_Typ2).Innereien
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 19.05.05 08:29 
Ich hoffe, dass ich das falsch verstanden habe. :wink:
Du hast also ein Objekt A (äußere Klasse) und ein B (innere Klasse). Wobei ich vermute, dass damit gemeint ist, dass B von A abgeleitet ist.
Natürlich kann man auch in Delphi ein Typecast machen.
Dazu wird der Type in den gewandelt werden soll, vor die Variable geschrieben. Die Variable steht dann in Klammern dahinter. Dann kann man sogar auf die Eigenschaften und Methoden des Objektes zugreifen in dessen Typ man gecastet hat:
ausblenden Delphi-Quelltext
1:
2:
3:
TypeB(A).EigenschaftX;
//oder
(A as TypeB).EigenschaftX; // Bin mir nicht ganz sicher bei der Schreibweise

Die zweite Variante ist die sicherere, da dort noch automatische Prüfungen stattfinden, iirc. Ivh benutze aber immer die erste, da ich weiß was ich so programmiere.

Das Problem kann bei deinem Wunsch aber sein, dass du so auf Methoden und Eigenschaften zugreifst, die gar nicht existieren in TypeA. Das dürfte dann zu Schutzverletzungen führen. Umgekehrt dürfte es kein Problem geben.

EDIT: Habe gerade gesehen, dass du es schon slebst rausgefunden hast. (Immer diese blöden Telefonate...)
ANSIJoker Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Fr 20.05.05 09:38 
hehe :)
Master_BB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Di 05.07.05 18:01 
also da ich jetzt mich auch schon
seit ca 1nem Monat mit .NET befasse und erstmal nur Winforms Komponenten geschrieben
habe sind mir da auhc so einige sachen aufgefallen.
Hilfreich ist es hier wenn man ncoh Java oder so ein wenig kennt wie es da ist.

Man muss sich vor augen halten das .NET echt voll objectorientiert ist nicht so wie das normale
delphi/pascal.
sprich wenn du einen integer hast ist das ein object deine variable
und du kannst sie ganz simple in string umwandeln durch
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
  bla : integer;
  MainString : string;
begin
  MainString := bla.toString;
end;


amsonsten kommst du von integer nicht mehr viel weiter beim typecast.
aber ich glaube jeder typ hat eine toString funktion drin.

dann ist mir ab und aufgefallen beim einbinden von Resourcen per ResourceManager
das man dort bei bildern das so macht
(anmerkung man kann mit dem Resourcemanager nur objekte oder strings aus einer resourcefile laden)
(wir gehen davon aus das wir bilder bmps drin haben.
Image := (Bitmap)ResourceManager.GetObject('mybmp.bmp');
hier sieht man das man den typ einfach davor schreibt hab ich auch nur
durch probieren herraus gefunden, ist halt wie bei java.

hoffe ich konnt ein wenig helfen.

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.