Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

AW: Gehen strings als Eigenschaftsnamen? Wenn ja wie?

  Alt 7. Okt 2018, 12:14
Suchst Du sinngemäß sowas?
Delphi-Quellcode:
uses TypInfo;

procedure SetProperty(AComponent: TComponent; sProperty, sValue: string);
var
  PropInfo: PPropInfo;
begin
  if Assigned(AComponent) then begin
    PropInfo := GetPropInfo(AComponent.ClassInfo, sProperty);
    if Assigned(PropInfo) then begin
      case PropInfo^.PropType^^.Kind of
        tkString,
        tkLString,
        tkWString: SetStrProp(AComponent, PropInfo, sValue);
        tkInteger: SetOrdProp(AComponent, PropInfo, StrToInt(sValue))
      else
        SetStringsProperty(AComponent, PropInfo, sValue);
      end;
    end;
  end;
end;

procedure SetStringsProperty(AComponent: TComponent;
                             PropInfo: PPropInfo;
                             sValues: string);
var
  AStrings: TStringList;
  sBuffer: string;
  i: Integer;
begin
  AStrings := TStringList.Create;
  i := Pos(FSeparator, sValues);
  while (i > 0) do begin
    sBuffer := Copy(sValues, 1, i-1);
    Delete(sValues, 1, i - 1 + Length(FSeparator));
    i := Pos(FSeparator, sValues);
    AStrings.Add(Trim(sBuffer));
  end;
  if (Length(Trim(sValues)) > 0) then AStrings.Add(Trim(sValues));
  SetOrdProp(AComponent, PropInfo, LongInt(Pointer(AStrings)));
  AStrings.Free;
end;
Im Zweifelsfalle mal die Unit TypInfos (so hieß sie zu Dlephi 7-Zeiten) durchforsten. Da müsste so etliches zum Abfragen uns Setzen von Eigenschaften (über den Namen) drinne sein.

Geändert von Delphi.Narium ( 7. Okt 2018 um 12:33 Uhr) Grund: Text ergänzt
  Mit Zitat antworten Zitat