Thema: Delphi [RTTI] Set-Typ setzen

Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

[RTTI] Set-Typ setzen

  Alt 4. Jun 2006, 09:52
Hallo,
ich versuche einen set-typ anhand eines strings zu setzen...hier mal ein bisschen code:

Delphi-Quellcode:
function GetSetValue(setInfo:pTypeInfo;valueStr:string):Integer;
var ti:pTypeInfo;
    td:pTypedata;
    s:string;
    p:integer;
begin
  result:=0;
  ti:=nil;
  if assigned(setInfo) then
  begin
    td:=GetTypeData(setinfo);
    if assigned(td) then ti:=td.CompType^;
    if assigned(ti) then
    begin
      s:=copy(valueStr,2,length(ValueStr)-2);
      p:=pos(',',s);
      while p>0 do
      begin
        inc(result,getEnumValue(ti,copy(s,1,p-1)));
        delete(s,1,p);
        p:=pos(',',s);
      end;
      inc(result,getEnumValue(ti,copy(s,1,length(s))));
    end;
  end;
end;

procedure TForm_DFMMain.Button1Click(Sender: TObject);
var ti:pTypeInfo;
    pi:pPropInfo;
    val:integer;
begin
  ti:=FindTypeInfo(edit1.text);
  if ti.Kind=tkSet then
  begin
    val:=getsetValue(ti,edit2.text);
    showmessage(intToStr(val));
    ti:=findTypeInfo('TFont');
    pi:=getPropInfo(ti,'Style');
    if assigned(pi) then
      setOrdProp(button1,pi,val);
  end;
end;
das Problem besteht in der setOrdProp, die mir eine Zugriffsverletzung an den Kopf wirft, ich weis nur nicht warum.
Die FindTypeInfo-Funktion ist von Hagen Reddmann siehe hier

meine test-werte:
Delphi-Quellcode:
edit1.text:='TFontStyles';
edit2.text:='[fsBold,fsItalic,fsUnderline]';
Weis jemand eine Lösung?

Gruß Frank
  Mit Zitat antworten Zitat