AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion('string').membervar

Ein Thema von Pseudemys Nelsoni · begonnen am 10. Nov 2004 · letzter Beitrag vom 17. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Funktion('string').membervar

  Alt 10. Nov 2004, 11:59
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
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.174 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:08
Delphi-Quellcode:
procedure EineFunktion(SearchName: String): TMeinRekord;
begin
  ...
  ...
  result := MeinRekordArray[i];
end;
Das Problem ist jedoch, das du eine Kopie deines Records bekommst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:09
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;
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:12
@ 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
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:16
Nur mal so für mich

Was denn TCriteria und RecordsMatchesCriteria. Das kenn ich ja noch garnicht. War das nur als Beispiel gedacht, oder gibts das wirklich?
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:22
moin, danke für die antwort
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 12:28
Zitat von jim_raynor:
TCriteria und RecordsMatchesCriteria [..] gibts das wirklich?
Selbstverständlich sind diese Dinge durch konkrete Implementierungen zu ersetzen (obleich eine generische Routine mit etwas Mehraufwand ebenfalls erstellbar ist) und dienen zur Verdeutlichung eines möglichen Lösungsweges, ohne auf Details eingehen zu müssen.
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.291 Beiträge
 
Delphi 12 Athens
 
#8

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 13:07
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 13:14
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?
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#10

Re: Funktion('string').membervar

  Alt 10. Nov 2004, 13:21
hm, das stimmt, das es ne kopie ist ist doof, das bringt mir recht wenig.... könnte ich einen pointer verwenden?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 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