AGB  ·  Datenschutz  ·  Impressum  







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

Multiplatform und System.Typinfo

Ein Thema von QuickAndDirty · begonnen am 18. Jun 2015 · letzter Beitrag vom 18. Jun 2015
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 18:09
Delphi-Version: XE8
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;
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (18. Jun 2015 um 18:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 18:25
Was ist mit Typinfo?
$2B or not $2B
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#3

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 18:49
Im NextGen compiler ist
PPropInfo^.Name vom Typ Byte.
das selbe gilt für PPropInfo^.PropType^.Name

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

Also gibts keine Zukunftsrisiken beim verwenden dieser Unit?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 18:54
Einfach die Funktionen der RTTI.pas versenden und garnicht selber auf die internen Strukturen zugreifen.
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
$2B or not $2B
  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 04: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