Article View: pl.comp.lang.delphi
Article #346921Re: RTTI SetValue i TValue.FromVariant
From: Roman Tyczka
Date: Fri, 25 Jan 2019 13:16
Date: Fri, 25 Jan 2019 13:16
39 lines
2382 bytes
2382 bytes
On Fri, 25 Jan 2019 04:34:47 -0800 (PST), immo wrote:
>>>> Taki kod przestawia mi itemindex z 0 na 1. Bez błędów i problemów.
>>>
>>> U Ciebie pewnie problemem jest metoda GetDBValueAsVariant, która robi
>>> Varianta integerowego jako stringowego. I stąd ambaras.
>>
>> Gdybyś w metodzie GetDBValueAsVariant, gdzie wiesz jakiego typu jest
>> kolumna w taneli, uży do zwracania varianta czegoś takiego:
>>
>> result := TValue.From<ColumnType>(DBValue).AsVariant
>>
>> to problemy by zniknęły imho.
>
> No chyba nie :) W tabeli jest string, a jak pokazałem powyżej w kodzie w System.Rtti przy Convert dla tkString do tkInteger jest ConvFail :)
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;
--
pozdrawiam
Roman Tyczka
Technical Details
Message-ID:
<ycbbneps4ih6$.dlg@tyczka.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Roman Tyczka <noemail@because.no> Newsgroups: pl.comp.lang.delphi Subject: Re: RTTI SetValue i TValue.FromVariant Date: Fri, 25 Jan 2019 14:16:42 +0100 Organization: ATMAN - ATM S.A. Lines: 39 Sender: romek@tyczka.no.found Message-ID: <ycbbneps4ih6$.dlg@tyczka.com> 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> NNTP-Posting-Host: ip-94-75-90-137.wave.com.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1548422203 31595 94.75.90.137 (25 Jan 2019 13:16:43 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Fri, 25 Jan 2019 13:16:43 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.84 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit