AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Array initialisieren, wenn Typ unbekannt
Thema durchsuchen
Ansicht
Themen-Optionen

Array initialisieren, wenn Typ unbekannt

Ein Thema von Chrissi91 · begonnen am 17. Jun 2008 · letzter Beitrag vom 18. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 15:40
Hallo,

wir machen gerade im Leistungskurs Informatik eine Array-Klasse. Sprich eine Klasse mit allen möglichen Funktionen, die ein Array gebrauchen kann.

Ich habe das in meinen Augen etwas eleganter gelöst.

Delphi-Quellcode:
unit uMyArray;

interface

type
  MyType = Integer;
  TMyArray = class(TObject)
    private
      MyArr: Array of MyType;
      MyPointer: Integer;
    public
      procedure Initialize;

      function GetPointer: Integer;
      function GetRow(Row: Integer): MyType;
      procedure SetRow(Value: MyType);
      procedure DelRow(Row: Integer);

      function GetFile(Path: String): Boolean;
      function SetFile(Path: String): Boolean;

      procedure Swap(Pos1, Pos2: Integer);
      procedure SortSlow(Column: Integer; Asc: Boolean);
      procedure SortQuick(Column: Integer; Asc: Boolean);

      function Search(Keyword: String): Integer;
    end;
Da wir noch nicht wissen von welchem Typ das DYNAMISCHE Array sein soll, habe ich den Typen "MyType" erstellt, habe ihn von Vorne herein auf Integer gesetzt. Vorteil: Wenn ich die mal auf String änder, brauche ich bei einigen Funktionen die Typen der Rückgabewerte (aus dem Array) nicht auch ändern, da sie ebenfalls vom Typen MyType sind.

Jetzt möchte ich das Array initialisieren, sprich löschen. Aber woher soll das Programm vorher wissen, welcher Typ es ist?

Ich könnte es so machen:

Delphi-Quellcode:
If MyType = Integer then
  For I := 1 to ... do
    Arr[I] := 0;
If MyType = String then
  For I := 1 to ... do
    Arr[I] := '';
Aber ich möchte das gerne ohne If-Konstrukt machen, sondern mit einer eleganteren Lösung. Ich hoffe ihr wisst was ich meine. Könnte ich vielleicht machen:

Delphi-Quellcode:
For I := 1 to ... do
  Arr[I] := Nil;
Das sieht aber ein bisschen komisch aus.

Hat jemand eine Idee?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 15:45
Mit D7 wohl nicht. Ab D2008 mit Generics wäre es wohl möglich.
Markus Kinzler
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 15:50
Wenn deine Arrayklasse native Datentypen unterstützen soll, wird's da keine elegante Lösung geben. Einfacher wird die Geschichte für Objekte. Dann hast du ja immer eine "Wurzeklasse".

Du könntest mit Wrapper-Klassen arbeiten und entsprechende Funktionen anbieten wie addInteger(), addString(), getInteger(), getString(), zum Beispiel. Das sollteste aber vielleicht vorher mit deinem Lehrer abklären
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:00
Zitat von mkinzler:
Mit D7 wohl nicht. Ab D2008 mit Generics wäre es wohl möglich.
Könnte man da nicht etwas mit Variant machen?
Einem Variant kann ich doch auch beliebige Typen zuweisen, oder?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:02
Zitat:
Könnte man da nicht etwas mit Variant machen?
Wäre auch ne Möglichkeit. Man verliert halt dann die Typenabhängigkeit
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:06
Zitat von mkinzler:
Zitat:
Könnte man da nicht etwas mit Variant machen?
Wäre auch ne Möglichkeit. Man verliert halt dann die Typenabhängigkeit
Das sollte doch erreicht werden, dass man vom Typ nicht abhängig ist, oder?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:08
So wie ich es verstanden habe, will er Generics programmieren. Und die zeichnen sich ja gerade durch ihre Typsicherheit aus.
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#8

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:26
Ich habe mal eben nachgeschaut was Generics ist.

Ich versuche es nochmal mit anderen Wörtern zu erklären. Der Typ wird vor dem Kompilieren angegeben. Ich habe den Umweg mit dem eigenen Typen gewählt, um mir Arbeit zu sparen. Ein Beispiel:

MyType ist Integer. Das Array ist demzufolge Integer, der Rückgabewert der Funktion GetRowInArray ist auch Integer. Sagt jetzt mein Informatiklehrer, schreibt sie für Strings um, muss ich nur noch MyType auf String setzen, den Rest nicht mehr.

Nur tritt dadurch ein Problem beim Leeren (hatte vorher aus Versehen Löschen gesagt ^^) des Arrays auf, da ich keine Allround-Zweisung für Arrays kenne, die sowohl für Integer, als auch String gleich ist. Bei String brauch ich Hochkommas und bei Zahlen keine. Ich würde das gerne "verallgemeinern".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Array initialisieren, wenn Typ unbekannt

  Alt 17. Jun 2008, 16:40
Vortrag bei der CodeRage II zum Thema Generics in Delphi
Markus Kinzler
  Mit Zitat antworten Zitat
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#10

Re: Array initialisieren, wenn Typ unbekannt

  Alt 18. Jun 2008, 05:40
Danke mkmizler.

Das Video ist relativ lang. Das guck ich mir dann im Informatikunterricht heute an.

Damit stell ich die Frage für vorübergehend auf beantwortet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:15 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