![]() |
Funktion('string').membervar
moin,
siehe topic, kann ich sowas irgendwie hinbekommen? ich möchte das der teil: "funktion('irgendeinstring')" den rekord zurückgibt wo die membervariable "irgendeinstring" ist und dann halt mit .membervar weiterarbeiten. schwer zu erklären was ich meine aber vielleicht verstehts ja jemand. ich machs mal "bildlicher" *g* sagen wir mal ich habe folgendes:
Delphi-Quellcode:
type
TMeinRekord = record name: string; nickname: string; end; var MeinRekordArray: array[0..9] of TMeinRekord; ... procedure irgendwas; begin EineFunktion('peter').nickname end; ich möchte also das mir "einefunktion" den passenden (anhand des namens) rekord liefert und möchte dann dessen nickname bekommen... wie mach ich das? das mit einer schleife gesucht werden muss ist mir klar, ich weiss nur nicht wie ich die funktion dann mit ".nickname" verbinde |
Re: Funktion('string').membervar
Delphi-Quellcode:
Das Problem ist jedoch, das du eine Kopie deines Records bekommst.
procedure EineFunktion(SearchName: String): TMeinRekord;
begin ... ... result := MeinRekordArray[i]; end; |
Re: Funktion('string').membervar
Hallo Pseudemys Nelsoni,
so sollte es i.A. klappen:
Delphi-Quellcode:
function GetRecordFromArrayThatMatchtesCriteria(const ACriteria: TCriteria): TMyRecord;
var i: Integer; begin for i := Low(AnArray) to High(AnArray) do if RecordsMatchesCriteria(AnArray[i], ACriteria) then begin Result := AnArray[i]; Exit; end; // no record found raise ERecordNotFound.Create('No suitable record found', ACriteria); end; |
Re: Funktion('string').membervar
@ Bernhard Geyer:
Das geht nicht, so wie ich deinen Quelltext sehe. Bei Prozeduren kannst du kein Result zurückgeben, dazu musst du eine Funktion definieren ;-) |
Re: Funktion('string').membervar
Nur mal so für mich :shock:
Was denn TCriteria und RecordsMatchesCriteria. Das kenn ich ja noch garnicht. War das nur als Beispiel gedacht, oder gibts das wirklich? |
Re: Funktion('string').membervar
moin, danke für die antwort :)
|
Re: Funktion('string').membervar
Zitat:
|
Re: Funktion('string').membervar
und was spricht gegen dein einfachen und bewährten Weg?
Delphi-Quellcode:
type
TMeinRekord = record name: string; nickname: string; end; var MeinRekordArray: array[0..9] of TMeinRekord; function EineFunktion(s: string): TMeinRekord; ... function EineFunktion_nickname(s: string): string; begin result := EineFunktion(s).nickname; end; ... procedure irgendwas; begin EineFunktion_nickname('peter') end; |
Re: Funktion('string').membervar
Ich kann auf den ersten Blick keinen Vorteil bei Deinem Ansatz erkennen, himitsu. Die Daten stehen weiterhin nur als Kopie zur Verfügung, es ist mehr Aufwand (zur Entwicklung sowie geringfügig zur Laufzeit) und bei einer Änderung der Struktur des Records oder Änderung der Bezeichnungen ist es erforderlich, die Zugriffsfunktionen anzupassen...
Übersehe ich etwas? Wo hat sich diese Art des Zugriffs bisher bewährt? :gruebel: |
Re: Funktion('string').membervar
hm, das stimmt, das es ne kopie ist ist doof, das bringt mir recht wenig.... könnte ich einen pointer verwenden?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 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