Article View: pl.comp.lang.delphi
Article #346922Re: RTTI SetValue i TValue.FromVariant
From: immo
Date: Fri, 25 Jan 2019 14:17
Date: Fri, 25 Jan 2019 14:17
34 lines
3328 bytes
3328 bytes
W dniu piątek, 25 stycznia 2019 14:16:44 UTC+1 użytkownik Roman Tyczka napisał:
> On Fri, 25 Jan 2019 04:34:47 -0800 (PST), immo wrote:
> Sprawdziłem ten kod, działa:
>
> procedure test;
> var
> ctx : TRttiContext;
> rttiType : TRttiType;
> rttiProp : TRttiProperty;
> value: variant;
> rttiValue: TValue;
> v: Variant;
> Begin
> v := '5'; //czyli variant "stringowy"
> Value := TValue.From<Integer>(v).AsVariant;
> rttiValue := TValue.FromVariant(Value);
> ctx := TRttiContext.Create;
> rttitype := ctx.GetType(frmMain.cbbServerAddress.ClassInfo);
> rttiprop := rttitype.GetProperty('ItemIndex');
> rttiProp.SetValue(frmMain.cbbServerAddress, rttiValue);
> end;
No tak zadziała to jawnie konwertujesz stringa do integera :) Podobne rozwiązanie podałem powyżej.
Natomiast chodzi o to, że jeśli TValue w środku ma varianta stringowego to nie potrafi go skonwertować do integera. I tyle.
Zastanawiam się tylko, czy jest jakiś powód takiego działania, czy po prostu zaniedbanie, błąd, czy może zostawione to jest na wieczne "później".
Bo mając informacje o tym jakiego rodzaju jest property, mając informacje jakiego rodzaju jest variant w TValue nie problem przekonwertować stringa do integera... Albo przerobić SetValue, zeby nie wymagał TValue tylko Varianta...
Wiem że varianty są kapryśne w niektórych zastosowaniach - może to jest problemem dlaczego to jest tak a nie inaczej?
Zresztą - nieważne - to już tylko dywagacje na ten temat :)
pozdrawiam i miłego weekendu,
Przemek O.
Technical Details
Message-ID:
<cc1d2f96-1bcd-4717-98af-a00867cd6d59@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!k10no278145itk.0!news-out.google.com!v71ni363ita.0!nntp.google.com!k10no278141itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<26a7a704-1917-44d0-9661-5e95ad255534@googlegroups.com> <xhs5aachxoxt.dlg@tyczka.com> <b0793d30-5159-4dd7-b059-d0add1131590@googlegroups.com> <lqwexlswweys.dlg@tyczka.com> <24f75068-0e40-489a-be02-9042b10692dc@googlegroups.com> <67ocpvsjh6td$.dlg@tyczka.com> <7bfkywf7eusg$.dlg@tyczka.com> <14p95nhiv0qm$.dlg@tyczka.com> <87d7a95e-b0fc-4481-9c60-36c02e54c3d0@googlegroups.com> <ycbbneps4ih6$.dlg@tyczka.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a02:8ca9:: with SMTP id f38mr8929333jak.14.1548425844452; Fri, 25 Jan 2019 06:17:24 -0800 (PST) X-Received: by 2002:a9d:6f14:: with SMTP id n20mr168090otq.2.1548425844201; Fri, 25 Jan 2019 06:17:24 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!k10no278145itk.0!news-out.google.com!v71ni363ita.0!nntp.google.com!k10no278141itk.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Fri, 25 Jan 2019 06:17:23 -0800 (PST) In-Reply-To: <ycbbneps4ih6$.dlg@tyczka.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> <lqwexlswweys.dlg@tyczka.com> <24f75068-0e40-489a-be02-9042b10692dc@googlegroups.com> <67ocpvsjh6td$.dlg@tyczka.com> <7bfkywf7eusg$.dlg@tyczka.com> <14p95nhiv0qm$.dlg@tyczka.com> <87d7a95e-b0fc-4481-9c60-36c02e54c3d0@googlegroups.com> <ycbbneps4ih6$.dlg@tyczka.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <cc1d2f96-1bcd-4717-98af-a00867cd6d59@googlegroups.com> Subject: Re: RTTI SetValue i TValue.FromVariant From: immo <przemek-o@soft-system.pl> Injection-Date: Fri, 25 Jan 2019 14:17:24 +0000 Lines: 43 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit