Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zuweisung von Feldwerten - Optimierung (https://www.delphipraxis.net/206125-zuweisung-von-feldwerten-optimierung.html)

lowmax_5 20. Nov 2020 15:46

Zuweisung von Feldwerten - Optimierung
 
Hallo,

ich habe mir eine Funktion gebaut, um Werte zuzuweisen

Code:
Verbinde(lArtikel.artikelbez,'artikelbez',(JA.Items[x] as TJsonObject),'');
in dem ich das Feld der Klasse lArtikel mit dem gleichnamigen Feld in einem TJsonobject anbinde.

Was mich stört ist die doppelte Angabe von 'artikelbez', da ja in der Regel immer der gleiche Name angebunden wird.
Kann auf die Angabe des zweiten Parameters verzichtet werden? Wie lässt sich das eleganter lösen?

Jasocul 23. Nov 2020 06:27

AW: Zuweisung von Feldwerten - Optimierung
 
Zitat:

Zitat von lowmax_5 (Beitrag 1477655)
... da ja in der Regel immer der gleiche Name angebunden wird.

In der Regel? Also doch nicht immer?
Dann würde ich es so lassen.
Ansonsten musst du vermutlich über die RTTI gehen. Es gibt da meines Wissens eine Funktion GetPropInfo. Es muss aber noch einige beachtet werden, damit es funktioniert. Keine Ahnung, ob sich der Aufwand lohnt.

mytbo 23. Nov 2020 09:35

AW: Zuweisung von Feldwerten - Optimierung
 
Für ältere Delphi Versionen kann ich klar NEIN sagen. Eine Funktion wie z.B. TArtikel.ArtikelBez.PropName gibt es dort nicht. Ich löse es wie folgt:
Delphi-Quellcode:
TArtikel = class(TPersistent)
strict private
  type
    TOPNRec = record
      const ArtikelBez = 'ArtikelBez';
     ...
   end;
public
  const OPN: TOPNRec = ();
...
end;
Dann kannst du folgendes schreiben:
Delphi-Quellcode:
Verbinde(lArtikel.ArtikelBez, TArtikel.OPN.ArtikelBez, (JA.Items[x] as TJsonObject), '');
Der klare Vorteil ist, du wirst von der IDE beim Schreiben unterstützt und der Compiler verhindert eventuelle Tippfehler weit verstreut im Sourcecode.

Bis bald...
Thomas


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz