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
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 19:22
Hi,

ich mochte einen/mehrere Record(s) verwalten. Ich habe das jetzt mit einem dyn. Array gelöst,
was mir aber nicht so gefällt. Ich habe da an TList gedacht komme aber nicht so recht voran.

Ich möcht in der Liste auf den Record über einen Index, was ja nun eion Problem ist, aber auch
über einen Namen zugreifen können und da fällt mir nix ein...

Pseudocode
Code:
type
  myRecord = record
    Handle: int
    Titel: string
  end;

type
  myRecordList = List of myRecord


begin
  myRecordList.add(Handle1, 'Abc');
  myRecordList.add(Handle2, 'Def');
  myRecordList.add(Handle3, 'Ghi');

 
  // holen per List-Index //
  anyHandle := myRecordList[Idx].Handle
  anyTitel := myRecordList[Idx].Titel

  // holen per List-Index //
  anyHandle := myRecordList.GetFromTitle('Abc').Handle

  // Löschen
  myRecordList[Idx].Delete;
  myRecordList[ myRecordList.GetFromTitle('Abc').Index ].Delete;
end.


So eine (fasst) fertige oder ähnliche Klasse gibt es nicht in Delphi gelle ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 19:28
Klingt irgendwie nach einem Dictionary, besonders wenn du denn Index nur zum Durchlaufen brauchst.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Elvis

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

AW: Record Verwalten - Wie am besten ?

  Alt 3. Mai 2011, 10: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
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 19:28
Hm, spontan würde mir da ein Assoziatives Array oder eine Hashtable einfallen, allerdings kenn ich keine Implementierungen dafür in Delphi und ich weiß auch nicht, ob man dann zusätzlich zum Schlüssel auch noch per Index auf die einzelnen Elemente zugreifen kann...

Edit: BUG war mit seinem Dictionary schneller. Das scheint alle Anforderungen zu erfüllen - und baut auf dem Hashtable-Prinzip auf
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/

Geändert von patti ( 2. Mai 2011 um 19:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#5

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 20:46
Hm, so etwas "fettes" wollt ich ja nun nicht.

Ich muss mal sehen ob man da was von TStringlist o.ä. ableiten kann.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 20:54
Evtl. ist funktioniert Objects in TStringList.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 20:59
Für String und Integer kann man wirklich eine TStringList mit Objects missbrauchen
AddObject('test', Pointer(1234));
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Record Verwalten - Wie am besten ?

  Alt 2. Mai 2011, 21:35
Für String und Integer kann man wirklich eine TStringList mit Objects missbrauchen
AddObject('test', Pointer(1234));
Oder eben Zeiger auf Records
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:02 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