🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346913

Re: RTTI SetValue i TValue.FromVariant

#346913
From: immo
Date: Fri, 25 Jan 2019 09:32
25 lines
2494 bytes
W dniu piątek, 25 stycznia 2019 09:51:28 UTC+1 użytkownik immo napisał:

> Ten problem konkretnie w Delphi XE2, ale nakierowałeś mnie - muszę to sprawdzić w najnowszym :)

I sprawdzone - nie ma znaczenia :) W RIO tez jest tak samo.
Co ciekawe w TValue.Cast typ w PTypeInfo jest poprawny - czyli tkInteger. 

--- trochę sobie pobiegałem po kodzie źródłowym
i w System.rtti

jest TValue.TryCast gdzie AtypeInfo jest tkInteger (czyli to co ma być) a System.TypeInfo(TValue) jest tkString bo faktycznie jako string jest przechowywany Variant.
I teraz całą prockę przechodzi i na koniec mamy linię
  Result := Conversions[FData.FTypeInfo^.Kind, ATypeInfo^.Kind](Self, ATypeInfo, AResult);

Gdzie Conversions to 
const
  Conversions: array[TTypeKind,TTypeKind] of TConvertFunc = ( // [source, target]

i dla tkInteger jako target i tkString jako source mamy = ConvFail :)
Trochę to dziwne, bo nie widzę problemu konwersji stringa do integera :P

No ale problem rozwiązany - w sensie - Delphi tak ma, nie wnikając w zasadność.

pozdrawiam,
Przemek O.
Technical Details
Message-ID: <01a7122f-fd72-442f-9e50-a376c0fbb979@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!feeder.erje.net!1.eu.feeder.erje.net!proxad.net!feeder1-2.proxad.net!209.85.166.216.MISMATCH!q69no252501itb.0!news-out.google.com!v141ni343ita.0!nntp.google.com!k10no251843itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <26a7a704-1917-44d0-9661-5e95ad255534@googlegroups.com> <xhs5aachxoxt.dlg@tyczka.com> <b0793d30-5159-4dd7-b059-d0add1131590@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:294f:: with SMTP id p76mr4739581itp.34.1548408750723;        Fri, 25 Jan 2019 01:32:30 -0800 (PST)
X-Received: by 2002:a9d:ef3:: with SMTP id 106mr156190otj.6.1548408750498; Fri, 25 Jan 2019 01:32:30 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!feeder.erje.net!1.eu.feeder.erje.net!proxad.net!feeder1-2.proxad.net!209.85.166.216.MISMATCH!q69no252501itb.0!news-out.google.com!v141ni343ita.0!nntp.google.com!k10no251843itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Fri, 25 Jan 2019 01:32:30 -0800 (PST)
In-Reply-To: <b0793d30-5159-4dd7-b059-d0add1131590@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.65.27.242; posting-account=uWBjDgoAAACxkgIP6dtE4dpCnc16V86n
NNTP-Posting-Host: 77.65.27.242
References: <26a7a704-1917-44d0-9661-5e95ad255534@googlegroups.com> <xhs5aachxoxt.dlg@tyczka.com> <b0793d30-5159-4dd7-b059-d0add1131590@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <01a7122f-fd72-442f-9e50-a376c0fbb979@googlegroups.com>
Subject: Re: RTTI SetValue i TValue.FromVariant
From: immo <przemek-o@soft-system.pl>
Injection-Date: Fri, 25 Jan 2019 09:32:30 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit