![]() |
Assoziative Arrays
Hallo,
gibz in Delphi eigentlich Assoziative Arrays so wie in PHP?
Code:
also ich mach das immer so zb:
$person = array(
name => "faux", swapit => 730);
Delphi-Quellcode:
geht das auch anders?
type
TPerson = (name, swapit); var Person: array [name..swapit] of TPersion; begin Person[name] := 'faux'; Person[swapit] := 730; end. |
Re: Assoziative Arrays
In Delphi selbst gibt es sowas nicht.
Aber wenn du mal diese super DP-Suchfunktion verwendesst... ![]() |
Re: Assoziative Arrays
Hallo,
grundsätzlich würde ich es so lösen
Delphi-Quellcode:
unit Unit2;
interface uses SysUtils, classes; Type TArrayItem = class(TObject) private FName: String; public property Name : String read FName write FName; end; TArrayItems = class(TList) private function GetArrayItem(Name: String): TArrayItem; public function Add(const Itemname : String) : TArrayItem; property ArrayItems[Name : String] : TArrayItem read GetArrayItem; end; implementation { TArrayItems } function TArrayItems.Add(const Itemname: String): TArrayItem; begin Result:=TArrayItem.Create; inherited Add(Result); end; function TArrayItems.GetArrayItem(Name: String): TArrayItem; var iCnt : Integer; begin Result:=Nil; For iCnt:=0 to Count-1 do begin If AnsiUpperCase(TArrayItem(Items[iCnt]).Name)=AnsiUpperCase(Name) then begin Result:=Items[iCnt]; Exit; end; end; end; end. |
Re: Assoziative Arrays
Also ich halte eine indexed property fuer ein assoziatives Array.
Schliesslich kann man mit einem beliebigen Typ indizieren. |
Re: Assoziative Arrays
oder vielleicht so:
Delphi-Quellcode:
gefunden auf
procedure TForm1.Button1Click(Sender: TObject);
var DataField: TStrings; begin DataField := TStringList.Create; DataField.Add(Format('%s=%s', ['Jonas', '15.03.1980'])); ShowMessage(DataField.Values['Jonas']) // will print the Birthday of Jonas DataField.Free; end; ![]() |
Re: Assoziative Arrays
Eine Hash-Version ist auf jeden Fall erheblich performanter. Bei kleinen Arrays ist das vielleicht nicht so wichtig, aber bei mehreren Hundert Datensätzen und häufigen Zugriffen rechnest du dich mit dem Indexing zu tode.
|
Re: Assoziative Arrays
Moin!
Wie wär's damit?
Delphi-Quellcode:
MfG
type
TPerson = Record name : String; swapit : Integer; End; var Person: array of TPersion; begin Person[0].Name := 'faux'; Person[0].SwapIt := 730; end. Muetze1 |
Re: Assoziative Arrays
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:40 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