AGB  ·  Datenschutz  ·  Impressum  







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

Liste von Records

Ein Thema von Getox · begonnen am 4. Feb 2013 · letzter Beitrag vom 4. Feb 2013
Antwort Antwort
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#1

Liste von Records

  Alt 4. Feb 2013, 10:34
Delphi-Version: 2007
Guten morgen,

Ich habe wieder eine Stelle wo ich nicht so recht weiter weis.

Und zwar habe ich ein Programm, wo Aufträge in Form von Records verwaltet werden sollen.

Ich habe überlegt, die Records dann in einer Liste zu speichern. Diese möchte ich dann über den Index ansprechen und immer wenn ein Auftrag erledigt ist will ich dann halt Eintrag [0] löschen und die anderen sollen nachrücken.

Ich hab aber noch nie mit Listen überhaupt gearbeitet und habe viele verschiedene Posts gefunden, wie ich das handhaben kann. Diese Einträge sind aber teilweise schon 6 oder 7 jahre alt und ich weis nicht, ob diese dann noch aktuell sind.

Daher: Was für Listen soll ich jetzt nehmen und wie verwende ich diese dann speziell mit Records?

LG
Getox
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Liste von Records

  Alt 4. Feb 2013, 10:42
Wenn du statt Records Klassen nähmst, böte sich die TObjectList (Unit Cntnrs) an. Durch die "OwnsObjects"-Property ließe sich gerade im Bezug auf die Speicherverwaltung vieles komfortabler machen, als mit Records. (Zumindest wenn man nur die mitgelieferten Listenklassen nutzen möchte.)
Da Delphi 2007 noch keine Generics kennt, müsstest du dich zudem noch mit Typecasts beschätfigen, und für etwas mehr Komfort auch mit dem Ableiten einer entsprechend typisierten ObjectList (so das bei der Verwendung die Casts nicht mehr nötig wären).

Grundsätzlich sind die alten Artikel hier noch voll zustreffend für dich, da sich dort erst so wirklich mit D2009 wegen der Generics etwas geändert hat.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium ( 4. Feb 2013 um 13:03 Uhr)
  Mit Zitat antworten Zitat
Getox

Registriert seit: 28. Dez 2012
155 Beiträge
 
Delphi XE3 Professional
 
#3

AW: Liste von Records

  Alt 4. Feb 2013, 10:46
Jagut, ich habe halt ein Record gewählt, weil es ja "böse" ist, wenn man Objekte als reine Datenbehälter missbraucht...
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#4

AW: Liste von Records

  Alt 4. Feb 2013, 11:37
Das ist keinesfalls böse, jedenfalls nicht schlechter als Records.
Es ist sogar meist eine sehr gute Entscheidung, fachliche Logik von der reinen Datentransportschicht zu trennen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Liste von Records

  Alt 4. Feb 2013, 12:09
@Getox

Vergiss TList, nimm wie Medium es vorgeschlagen hat TObjectLIst. Letztendlich ist es fast das gleiche in dunkel grün, bringt aber paar Vorteile.

Ein großer Vorteil ist, dass man sich (je nach Einstellung) nicht mehr um die Freigabe der Ojekte alleine kümmern muss. Braucht man ein Item nicht, löscht man es und das beinhaltende Objekt wird automatisch freigegeben. Im Unterschied zu anderen Listen, wo man sich selbst drum kümmern muss.

Und ob du nun Records oder Objekte nimmst

TTest = class
Name: string;
Alter: Byte;
end;

beides sollte funktionieren.
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Liste von Records

  Alt 4. Feb 2013, 14:08
In seinem Buch "Tomes of Delphi: Algorithms and Data Structures" hatte Bucknall (Bucknall, Julian M.) u.a. den Sourcecode einer 'Record list class' veröffentlicht.
Wenn man das Buch nicht hat: auch auf Bucknalls 'OLD personal web site' kann dieser Code heruntergeladen werden als ZIP-File (ToDADS_source.zip): http://www.boyet.com/FixedArticles/DADSBook.html.
Im ZIP-File ist die Unit TDRecLst enthalten. Benötigt wird außerdem die Unit TDBasics sowie das Includefile TDDefine.inc, die beide ebenfalls im ZIP-File vorhanden sind.

Der Code stammt zwar bereits aus 2001, ist aber auch heute immer noch erfolgreich verwendbar, jedenfalls solange man mit reinen Ansistrings arbeitet. Nur wenige, geringfügige Anpassungen sind dazu notwendig:
1) in der TDDefine.inc die Compiler-Definitionen entsprechend der verwendeten Delphi-Versionen ergänzen.
2) zur Verwendung mit neueren Delphi-Versionen (nach D7, getestet mit D-XE) alle String-Deklarationen explizit als Ansistring deklarieren sowie alle API-calls CompareString als CompareStringA ausführen. Für D7 sind diese Änderungen natürlich nicht erforderlich, da ja dort alle Strings implizit Ansistrings sind.
Vermutlich kann man den Code auch zur Verwendung für Widestrings anpassen, habe ich selbst aber bisher nicht gebraucht.
  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 13:14 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