![]() |
Delphi-Version: 2010
Assoziative Arrays
Hi,
Ich suche eine Möglichkeit ein Assoziative Arrays zu nutzen. Ich habe jetzt schon von die Folgende Möglichkeit gefunden:
Delphi-Quellcode:
die Frage ist wie organisiere ich das intern am besten. Das Problem ist das in meinem Fall ständig werte dazukommen und wieder gelöscht auf nil gesetzt werden.
type
SomeClass = class public function GetArrayProp(Index: string): string; procedure SetArrayProp(Index: string; Value: string); property ArrayProp[Index: string]: string read GetArrayProp write SetArrayProp; ich brauchte in meiner Anwendung folgende Struktur: Clients[34] := TClient... Clients[234] := TClient... Clients[12] := TClient... User['deltachaos'][0] := 34; User['deltachaos'][1] := 234; User['deltachaos'][2] := 12; |
AW: Assoziative Arrays
Hast du dich schonmal hier umgesehn?
Da gibt es schon einige Beispiele, wo man abgucken könnte. :zwinker: > ![]() ![]() Ohne Generics läuft es und für dich dann datürlich noch den Record in eine Klasse umgewandelt: ![]() Ach ja, die Speicherverwalrung ist extra nicht stark optimiert, da dieses bei mir der "neue" Delphi-SpeicherManager schon ausreichend erledigt. Also entweder man optimiert das selber oder rüstet ebenso mit FastMM nach. PS:
Delphi-Quellcode:
Sowas "Einfaches", also ein assoziatives Array of String, könnte man auch über eine StringList erledigen.
SomeClass = class
public function GetArrayProp(Index: string): string; procedure SetArrayProp(Index: string; Value: string); property ArrayProp[Index: string]: string read GetArrayProp write SetArrayProp;
Delphi-Quellcode:
SL.Value['name'] = 'text'
|
AW: Assoziative Arrays
Doch das schon.
Nur häufen sich bei mir noch ein paar andere Probleme. Ich nutze zum einen FreePascal da es eine Server Anwendung ist die auf einem Linux Server laufen muss. Zum anderen weiß ich noch nicht mal genau wie ich die Speicherung der Clients überhaupt mache bzw. ob es einfacher geht. Da ich das gerade bemerkt habe habe ich auch einen anderen Thread aufgemacht: ![]() |
AW: Assoziative Arrays
(@mkinzler: ich mach mal hier weiter)
Zitat:
Darin versteckt sich ein kompletter TStringGrid. Eine TStringList (wie oben erwähnt) wäre aber sowas wie eine ValueList. Also im FPC/Lazarus dürfte die Record-Variante laufen ... und falls die Generics da auch nicht gehn oder sie nicht nötig sind, dann einfach den generischen Typen direkt durch deinen Wunschtypen ersetzen. Wenn man Record in Class ändert, dann hat man eine Klasse draus gemacht. Dann eventuell noch den eingebetteten Typen rausverlegen. Nach all diesen Änderungen könnte es eventuell sogar in Delphi 7 laufen. Ob Speicheroptimierungen nötig sind, das hängt davon ab, wie oft das Array verändert (gelöscht/hinzugefügt) wird und ob es nicht doch schon schnell genug ist. [add] Und hier noch ein kleiner Thread dazu ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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