AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Speichern einer allgemeinen Liste (Inhalt sind beliebige Objekte)
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern einer allgemeinen Liste (Inhalt sind beliebige Objekte)

Ein Thema von Astobix · begonnen am 6. Feb 2015 · letzter Beitrag vom 8. Feb 2015
 
Astobix

Registriert seit: 26. Dez 2012
26 Beiträge
 
Delphi 6 Personal
 
#1

Speichern einer allgemeinen Liste (Inhalt sind beliebige Objekte)

  Alt 6. Feb 2015, 19:56
Hallo,

im Rahmen einer Schulaufgabe (das ist keine Hausaufgaben-Frage, keine Angst ), soll ich Funktionen zum Abspeichern und Laden einer Liste schreiben, die die anderen Schüler dann zum Programmieren eines kleinen Vokabel-Trainers benutzen werden.
Gegeben ist mir dafür eine u_list Unit, die die Programmierung einer Liste enthält, in der beliebige Daten gespeichert werden können (es werden TObjects gespeichert).

Theoretisch soll ich nun Methoden schreiben, mit denen ich Vokabeln abspeichern (und Laden) kann. Das ist auch erstmal nicht das wirkliche Problem. Ich fände es allerdings extrem unschön, in einer "allgemeinen" Liste (beliebige Daten können gespeichert werden) Methoden zu schreiben, die exakt einen Typ von Daten speichern/laden können, da damit irgendwie die Vielseitigkeit der Listenklasse abhanden kommt.
Somit komme ich zu meiner ersten Frage:
Kann man Methoden schreiben, die allgemeine Daten abspeichern können (ein TObject), und diese exakt gleich wieder einlesen?


Da ich keine Möglichkeiten kenne, Daten allgemein abzuspeichern, habe ich mir gedacht, ich erstelle einfach eine Klasse TStringList, die von der Liste erbt.
An den Stellen, wo vorher die Klasse TObject vorkam, habe ich das ganze umgeschrieben und Strings verwendet. Um möglichst wenig Code zu wiederholen, habe ich die jeweiligen Funktionen und Prozeduren als overload makiert und in etwa so programmiert:
Delphi-Quellcode:
procedure TStringList.insertBefore(data: String);
var stringElement : TStringElement;
begin
 stringElement := TStringElement.create();
 stringElement.data := data;

 insertBefore(stringElement); //Das ist die Zeile, weswegen ich overload benutzen wollte.
end;
Die Klasse TStringElement beinhalted dabei nur einen String.

Das Problem was ich nun habe, wenn ich overload benutze, ist, dass ich auch bei einer StringList immernoch auf die inserBefore(TObject) Prozedur zugreifen kann.
Bevor die anderen Schüler dadurch aber ungewollte Fehler verursachen, möchte ich ihnen gerne diese Möglichkeit garnicht geben.
Daher meine zweite Frage:
Kann man - ohne die eigentliche Listenklasse zu verändern - die Prozeduren der Listenklasse innerhalb der Stringklasse verfügbar machen, außerhalb allerdings nicht?

Ich hoffe ihr versteht meine Fragen und bedanke mich bereits jetzt für die Zeit, die ihr zum helfen investiert!

Vielleicht noch als kleine Übersicht, was das Ziel ist:
  • Ich habe eine Klasse Liste gegeben, die allgemeine Objekte speichert
  • Ich möchte nur Strings speichern, aber damit nicht die eigentliche Listenklasse behindern
  • Die Schüler sollten nach Möglichkeit nur mit den Befehlen der Liste zu tun haben, keine weiteren (außer speichern und laden)
  • Die Klasse soll für andere Nutzer möglichst Narrensicher sein

Im Anhang habe ich euch mal die beiden Units U_StringList und U_List gestellt, falls sich jemand dort Überblick verschaffen will.
Angehängte Dateien
Dateityp: pas u_list.pas (16,5 KB, 5x aufgerufen)
Dateityp: pas u_stringlist.pas (1,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
 


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 05:27 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