AGB  ·  Datenschutz  ·  Impressum  







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

verschiedene Datentypen" zusammenfassen"

Ein Thema von billi · begonnen am 22. Feb 2005 · letzter Beitrag vom 22. Feb 2005
Antwort Antwort
billi

Registriert seit: 11. Sep 2003
Ort: Darmstadt
127 Beiträge
 
Delphi 5 Standard
 
#1

verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 16:49
Hallo,
ich sitze momentan an einer kleinen Studienarbeit für meinen Info-LK. Wenn sie fertig ist, soll das Programm alle Operationen rund um Binäre- und AVL- Bäume grafisch darstellen. Dazu bin ich dabei eine eigene Unit zu programmieren.
Mein Problem ist jetzt aber, dass ich gerne eine Wahlmöglichkeit für die Datentype der Werte hätte. D.h. ob ich den Baum nur mit integer Werten fülle, oder ob ich mit strings arbeite.
Nun stehe ich vor dem Problem wie ich das implementieren soll: einfach zwei Units (eine für strings und eine für integer) zu nehmen erdscheint mir doch ein bisschen mit "Kanonen auf Spatzen geschossen". Gibt es irgendwie eine Möglichkeit, einen "Oberdatentyp" zu verwenden, der beide Typen (string und integer) verwendet?
Momentan arbeite ich nur mit Strings:
Delphi-Quellcode:
TDaten = string;
TToKnoten = ^TKnoten;
TKnoten = record
            Daten : TDaten;
            ToLinks : TToKnoten;
            ToRechts : TToKnoten
         end;
Ich bin mal auf eure Rückmeldungen gespannt.
Vielen Dank,
Markus
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 16:53
Wenn du schon mit so arbeitest, nimm doch eine Integerklasse und eine Stringklasse, beide von einer abstrakten Klasse TDatenBasis abgeleitet. Die kannst du dann deinem Knoten zur Laufzeit beliebig zuordnen. Dabei sollte allerdings beachtet werden, dass sich die verschiedenen Typen nicht vermischen, also das ein Knoten mit einem String bestückt ist und ein anderer mit einem Integer, wenn du nur mit Integern arbeitest. Das könnte knallen
  Mit Zitat antworten Zitat
billi

Registriert seit: 11. Sep 2003
Ort: Darmstadt
127 Beiträge
 
Delphi 5 Standard
 
#3

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 16:57
Vielen Dank für die schnelle Antwort!
Sowas in der Art hatte ich mir auch schon gedacht, nur hapert es da bei mir etwas mit der Umsetztung (insbes. Typendeklaration).
Man müssta dann halt in jeder Procedure schaun mit welchem typ man gerade arbeitet, aber ansonsten hört sich das net schlecht an...
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 16:59
Wenn du mit den separaten Typen arbeitest, könntest du die Prozeduren, die die Typen bearbeiten, doch gleich in die Klassendeklaration aufnehmen. Dann hättest du die Sicherheit, das nur das getan wird, was getan werden soll und nicht eine Stringoperation auf deinen Integer angewendet wird
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 17:26
Oder du nimmst Variants als Datentyp. Ja ich weis, dies ist zwar universell aber nicht besonders schnell. Vorteil ist du kannst Integer die als Strings vorliegen denoch sortieren.
Da du ja sowieso ein DEMO Projekt machst würde ich Variants nehmen, da kommts mehr auf Übersichtlichkeit und Strukturierung als auf Performance an.

Gruß Hagen
  Mit Zitat antworten Zitat
billi

Registriert seit: 11. Sep 2003
Ort: Darmstadt
127 Beiträge
 
Delphi 5 Standard
 
#6

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 18:01
Also, das mit den Variants hört sich zwar interessant an, aber zum einen habe ich da überhaupt keine Ahnung von und eine Einarbeitung scheint mir, nach den was ich bislang gelesen hab, auch net so simpel.
Der Vorschlag von Dax erscheint mir da schon einfacher umzusetzen.

Zitat von Dax:
nimm doch eine Integerklasse und eine Stringklasse, beide von einer abstrakten Klasse TDatenBasis abgeleitet. Die kannst du dann deinem Knoten zur Laufzeit beliebig zuordnen.
Wie hab ich mir das aber genau vorzustellen? Ev. wär etwas code ganz hilfreich...
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: verschiedene Datentypen" zusammenfassen"

  Alt 22. Feb 2005, 18:12
Du hast in jedem Knoten in obigem Code ein Element des Typs TDaten. Dieses änderst du einfach in TDatenBasis um und definierst wie folgt:
Delphi-Quellcode:
type
  TDatenBasis = class
  public
    // Eine Beispielmethode
    procedure Work; virtual; abstract;
  end;
In den Rumpf der Klasse fügst du noch die Methoden ein, die du zum arbeiten brauchst. Da du nicht weißt, mit welchen Typ von Daten du arbeiten wirst, definierst du die Methoden als abstract, also ohne Code. Den Code musst du später schreiben, wenn du deine Klasse, z.B. TInteger von der Basisklasse ableitest:
Delphi-Quellcode:
type
  TInteger = class(TDatenBasis)
  private
    fDaten: Integer;
  public
    procedure Work; override;
  end;

// Weiteres in der Unit

procedure TInteger.Work;
begin
  // Mache was mit fDatan oder anderen Dingen
end;
Weil du in der Basisklasse bereits alle Methoden, die du später brauchst, definiert hast, kannst du ohne umständlicher und eventuell gefährliche Typecasts mit deinen String-, Integer-, Char-, Floating-Point-Klassen usw. arbeiten. Je nach belieben und dem angestrebten Funktionsumfang kannst du beliebig viele dieser Methoden hinzufügen.

PS: Hagens Methode ist viel einfacher. Du deklarierst dein Feld nicht als TDaten, sondern als Delphi-Referenz durchsuchenVariant und kannst mit diesem Variant arbeiten, als wäre es gleichzeitig Integer, String, Floating-Point-Zahl, Zeichen...
  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 02:40 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