![]() |
Record-Feld über Variable ansprechen
Servus.
Ich will ein Feld in einem Record mit über eine Variable ansprechen. Angenommen das Record sieht wie folgt aus:
Delphi-Quellcode:
nun will ich mittels einer Funktion einen Wert auslesen:
type TTestRecord = record
Test1: integer; Test2: integer; Test3: integer; Test4: integer; end; z.B.
Delphi-Quellcode:
also
function getValueFromRecord(fieldname: string): integer;
Delphi-Quellcode:
Wie ist das zu bewerkstelligen?
i := getValueFromRecord('Test1');
Da ich bisher nur mit Datenbanken hantiere ist das neu für mich. Bei einer DBTable kann ich den Wert vom aktuellen Datensatz mit FieldByName(varibale).AsInteger; holen. MfG, Ronny |
Re: Record-Feld über Variable ansprechen
einfach
Delphi-Quellcode:
<Recordvariable>.<Feldname>
z.b.
Delphi-Quellcode:
TestRecord: TTestRecord;
... TestRecord.Test1 |
Re: Record-Feld über Variable ansprechen
Man kann nicht über den Namen als String direkt auf ein Feld zugreifen, da dazu ganz einfach, die Informationen zur Laufzeit fehlen. Man könnte es über Objekte mit published-Properties machen. Diese kann man dann über die
![]()
Delphi-Quellcode:
function getValueFromRecord(fieldname: string): integer;
begin if fieldname='Test1' then result:=myRec.Test1 else if fieldname='Test2' then result:=myRec.Test2 ... end; |
Re: Record-Feld über Variable ansprechen
Was natürlich auch gehen würde:
Delphi-Quellcode:
Müsste gehen. Aber natürlich nur, wenn die Zahl drinsteht. ;)
function getValueFromRecord(fieldname: string; rec: TTestRecord): integer;
var index: Integer; begin if TryStrToInt(copy(fieldname, 5, length(fieldname)-4), index) then Result:=PInteger(Cardinal(@rec)+(index-1)*4)^ else Result:=0; end; Ansonsten könntest du dir einfach eine Funktion basteln, die per if den Parameter fieldname auf bestimmte Werte überprüft und dann das richtige zurückgibt. |
Re: Record-Feld über Variable ansprechen
Zitat:
/edit: Aus der Delphi7-Hilfe: Zitat:
|
Re: Record-Feld über Variable ansprechen
Also: Du hast jetzt einen Record. Und du hast einen String. In dem String steht der Name irgendeines Feldes des Records. Wie willst du jetzt von dem Feld direkt auf das Record-Feld zugreifen?
|
Re: Record-Feld über Variable ansprechen
Zitat:
|
Re: Record-Feld über Variable ansprechen
Zitat:
[edit]....[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz