AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

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.549 Beiträge
 
Delphi 10.3 Rio
 
#1

Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 17: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
#PerfMatters

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

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.419 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 17:25
Was ist mit Typinfo?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.549 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 17: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
#PerfMatters
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.419 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Multiplatform und System.Typinfo

  Alt 18. Jun 2015, 17: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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf