Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Multiplatform und System.Typinfo (https://www.delphipraxis.net/185532-multiplatform-und-system-typinfo.html)

QuickAndDirty 18. Jun 2015 17:09

Delphi-Version: XE8

Multiplatform und System.Typinfo
 
Kann es sein das System.Typinfo nicht ganz das Richtige ist, wenn die App auf verschiedenen Systemen laufen soll?
Ist es besser auf die RTTI Unit auszuweichen?
Ist es ok Funktionen wie PByteTostring zu benutzen, um die Typinfo weiter verwenden zu können?

Delphi-Quellcode:
function PByteToString(FData:PByte): string; // kopie von System.TypInfo.TTypeInfoFieldAccessor.ToString
var
  Dest: array[0..511] of Char;
begin
  if FData^ <> 0 then
    SetString(Result, Dest, UTF8ToUnicode(Dest, Length(Dest), MarshaledAString(FData+1), FData^)-1)
  else
    Result := '';
end;

himitsu 18. Jun 2015 17:25

AW: Multiplatform und System.Typinfo
 
Was ist mit Typinfo?

QuickAndDirty 18. Jun 2015 17:49

AW: Multiplatform und System.Typinfo
 
Im NextGen compiler ist
PPropInfo^.Name vom Typ Byte.
das selbe gilt für PPropInfo^.PropType^.Name

muss da solche aufrufe machen:
Delphi-Quellcode:
 Result := PByteToString(@(fPropInfo^.PropType^.Name)) ;
, damit es klappt.

Also gibts keine Zukunftsrisiken beim verwenden dieser Unit?

himitsu 18. Jun 2015 17:54

AW: Multiplatform und System.Typinfo
 
Einfach die Funktionen der RTTI.pas versenden und garnicht selber auf die internen Strukturen zugreifen. :stupid:
Oder du gehst über TEncoding.UTF8, aber leider sind auch da die Pointeraufrufe schön versteckt, so daß du es erstmal in ein TBytes umkopieren mußt.

Ja, es ist Mist und etwas umständlich, da man ANSI rausgeworfen hat, wobei Emba selbst gemerkt hat, daß sie es intern doch noch benötigen.
(nur ohne Andreas können/dürfen wir die vorhandenen ANSI-Funktionen garnicht benutzen)
http://www.delphipraxis.net/185002-n...-und-ansi.html


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