Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Typconvertierung (https://www.delphipraxis.net/37302-typconvertierung.html)

valon 4. Jan 2005 11:32


Typconvertierung
 
Hallo Leute!
Ich habe ne Frage!
Ich habe folgende Funktionen.
Delphi-Quellcode:
function TDataChar.getData: Char;
var
  aLongint: Longint;
begin
  aLongint := Self.AbstractData;
  Result := char(aLongint);
end;

(*******************************************************************************
*
*******************************************************************************)
procedure TDataChar.setData(newvalue: Char);
begin
  Self.AbstractData := Ord(newvalue);
end;
AbstractData ist eine Variable vom Typ Variant . Mit der setData() tu ich den Ordinalwert eines Char newvalue in AbstractData zuweisen.
Mit getData() möchte ich wieder den Ordinalwert von newvalue , in den charZeichen umwandeln, so das ich wieder das Zeichen zur weiterverbeitung benutzen kann.

Ich hab das wie oben gemacht. doch char(aLongInt) funktioniert irgendwie nicht.

Kann einer vielleicht helfen?
Danke

fkerber 4. Jan 2005 11:34

Re: Typconvertierung
 
Hi!

Was heißt, es funktioniert nicht?

Kommen Fehlermeldungen?


Ciao Frederic

Stevie 4. Jan 2005 11:49

Re: Typconvertierung
 
Die Funktion heißt Chr!

Oxmyx 4. Jan 2005 12:07

Re: Typconvertierung
 
Typecasting kann man nur mit Datentypen machen, die gleich groß sind und die selbe Speicherdarstellung (also Ganzzahl bzw. Fließkommazahl) haben.

Chewie 4. Jan 2005 12:13

Re: Typconvertierung
 
Zitat:

Zitat von Oxmyx
Typecasting kann man nur mit Datentypen machen, die gleich groß sind

Nein. Geb mal ein & kompiliere es:

Delphi-Quellcode:
var
  i: Integer;
begin
  i := 567840003;
  ShowMessage(InttoStr(Byte(i))); //gibt 3
end;
Zitat:

Zitat von Oxmyx
und die selbe Speicherdarstellung (also Ganzzahl bzw. Fließkommazahl) haben.

Na ja, sagen wir mal so: Ein Cast ändert nur den Typ und nicht den Inhalt. Und da ein Variannt eine Datenstruktur ist, die mehrere Datenfelder enthält, funktioniert ein einfacher Cast nicht. Es sollte aber dann Umwandlungsmethoden geben. Welche, weiß ich nicht, da ich noch nie mit Variabts gearbeitet habe.

Oxmyx 4. Jan 2005 12:22

Re: Typconvertierung
 
Zitat:

Zitat von Chewie
Zitat:

Zitat von Oxmyx
Typecasting kann man nur mit Datentypen machen, die gleich groß sind

Nein. Geb mal ein & kompiliere es:

Delphi-Quellcode:
var
  i: Integer;
begin
  i := 567840003;
  ShowMessage(InttoStr(Byte(i))); //gibt 3
end;

Aus der Delphi-Hilfe:
"You can cast any variable to any type, provided their sizes are the same and you do not mix integers with reals."
Du hast einfach drei Bytes von deinem Integer abgeschnitten, so eine Art Bitmaske also.

Chewie 4. Jan 2005 12:51

Re: Typconvertierung
 
Die Delphi-Hilfe sagt, dass Casts möglich sind, wenn die Typen gleich groß sind. Sie sagt aber nicht, dass es nicht möglich ist, wenn die Typen nicht gleich groß sind ;)
Klar schneid ich was ab, trotzdem ist es ein gültiger Cast.


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