AGB  ·  Datenschutz  ·  Impressum  







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

Record Verwalten - Wie am besten ?

Ein Thema von turboPASCAL · begonnen am 2. Mai 2011 · letzter Beitrag vom 3. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 10:50
bei einer RecordList musst du dich IMHO um den Speicher kümmern.
Ich habe mal ein Beispiel angehangen.

Frank
Angehängte Dateien
Dateityp: zip sample.zip (3,3 KB, 4x aufgerufen)
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 11:05
bei einer RecordList musst du dich IMHO um den Speicher kümmern.
Ich habe mal ein Beispiel angehangen.

Frank
Zum Glück gibt es inzwischen (seit D2009) auch noch die generische TList<>, welche da vieles vereinfacht.
(auch wenn dieses eine kleine und manchmal gemeine Einschränkung besitzt, was das nachträgliche Ändern eines Recordinhaltes betrifft )

Und was den Ausgangsrecord dieses Threads betrifft: TDictionary<Handle, String> , mit Handle als Key und String als Value (oder andersrum).
$2B or not $2B

Geändert von himitsu ( 3. Mai 2011 um 11:08 Uhr)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
534 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 11:40
Der Vollständigkeit halber noch die sich an Bord befindende
THashedStringlist.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#14

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 11:55
Klingt irgendwie nach einem Dictionary, besonders wenn du denn Index nur zum Durchlaufen brauchst.
+1
Alzaimars Klassen sind alles andere als "fett". Wer seine Beiträge kennt, weiß wie wichtig ihm Performance ist.
Und seine kleinen Hashlisten sind mehr zackig genug. Wenn du Zugriff zu neueren Delphis hast, kannsu dir TDictionary<int, String> ankieken.
Bis dahin ist sein TIntegerDictionary so ziemlich das wassu willst.
Zum Glück gibt es inzwischen (seit D2009) auch noch die generische TList<>, welche da vieles vereinfacht.
(auch wenn dieses eine kleine und manchmal gemeine Einschränkung besitzt, was das nachträgliche Ändern eines Recordinhaltes betrifft )
Records sind Werte, keine Objekte und erst recht keine "Entitäten". Und in fast jedem Fall sollten Werte unveränderlich sein. Will heißen, dass eine Änderung eine veränderte Kopie liefern sollte. Nur so ist klar was unter der Haube tatsächlich passiert.

Delphi-Quellcode:
var x, y TDeinRecord;
begin
  x.Abc := 1;
  y := x;
  x.Abc := 2
  Assert(y.Abc = 2, 'Ja y.Abc = 1, denn y hat bekam ja auch eine KOPIE, so arbeiten reine *Werte* nunmal.');
end;
http://stackoverflow.com/questions/441309/why-are-mutable-structs-evil
Wer Records als Objekte missbraucht, weil er keinen Bock auf Speicherverwaltung hat, hat die falsche Laufzeitumgebung gewählt.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 14:00
Nochmals Entscheidungshilfe Record vs. Klasse innerhalb von Listen

Record
* bei sehr einfachen Strukturen wie z.B. TPoint oder Vektoren die in hoher Anzahl
(z.B. 3D Gittermodell) benötigt werden
Records benötigen geringfügig weniger Speicherplatz (4Bytes) als Objekte, was bei Stückzahlen im Millionenbereich eine Rolle spielen kann
* bei Records die von Aussen vorgegeben fest werden (z.B. Records der Windows API, Records einer Datei)

Klasse
* der Standardweg ist, dass man Datenstrukturen als Klassen abbildet
* die Klassen sollten nicht nur Properties haben, sondern auch Methoden, die mit den Daten arbeiten
* Programme, die mit Arrays oder Listen von Records arbeiten, verwenden implizit auch Code, der mit den Daten des Records arbeitet.
Nur ist dieser Code unkontrolliert in der Anwendung verschmiert, während bei einer Klasse der Code in Methoden klar erkennbar (und testbar!) wird.

==> In 95% der Fälle wird man sich für eine Klasse als Datenkontainer entscheiden.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:00 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