AGB  ·  Datenschutz  ·  Impressum  







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

Einen Keller in Delphi Programmieren

Ein Thema von Christian18 · begonnen am 28. Apr 2009 · letzter Beitrag vom 29. Apr 2009
Antwort Antwort
Seite 3 von 3     123   
mkinzler
(Moderator)

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

Re: Einen Keller in Delphi Programmieren

  Alt 28. Apr 2009, 19:59
Im Speicher werden die Elemente aber nach unten gestapelt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#22

Re: Einen Keller in Delphi Programmieren

  Alt 28. Apr 2009, 20:00
Du stellst etwas in den Keller. Und nochwas. Du musst das letzte Teil erst wieder aus dem Keller holen bevor Du das erste rausholen kannst. Ist doch egal ob man hoch oder tief stapelt - letztlich isses das gleiche
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Medium

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

Re: Einen Keller in Delphi Programmieren

  Alt 28. Apr 2009, 20:04
Die Begriffe sind nur deswegen in ihrer Übersetzung unterschiedlich, weil das Konzept sowohl von Englisch- als auch Deutschsprachigen Leuten unabhängig voneinander entwickelt wurde. Gemeint ist genau das selbe: Stack = Stapel = Keller. Rein historisch bedingt.
"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)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#24

Re: Einen Keller in Delphi Programmieren

  Alt 28. Apr 2009, 20:09
was willst du denn alles in deinem Keller/Stack lagern?

eventuell reicht es schon, wenn du dir mal den Typ Variant anschaust, da kann man recht viel Verschiedenes drin ablegen
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#25

Re: Einen Keller in Delphi Programmieren

  Alt 29. Apr 2009, 05:51
Zitat:
Naja ich wollte den Keller mit einem Array realisieren. Und das Array müsste dann ja auch einen Typ haben. Und wir sollen einen allgemeinen nehmen, womit man alle möglichen Datentypen abbilden kann. Ich kenne in Delphi habe keinen der das kann.
Anforderungen;
Du willst folgendes?


Keller.push( myData );


myData kann sein,
ein Integer?
ein TObject?
eine TStringlist?
Ein TForm?
ein Double?
ein String?


oder sogar ein anderer Record wie ein TRect?

das würde sehr einfach zu realisieren sein, wenn es ein Record gäbe..
Delphi-Quellcode:
TDataConverter = packed record
  FType : TDataType;
  FIntegerValue : Integer;
  FTRectValue : TRect;

  usw ...
  // plus ein paar Pointer falls es ein Object oder anderes Object ist

private

public

     class operator Implicit(const AValue: String): TDataConverter;
     class operator Implicit(const AValue: Double): TDataConverter;
     class operator Implicit(const AValue: TObjecct): TDataConverter;
     class operator Implicit(const AValue: Integer): TDataConverter;
     class operator Implicit(const AValue: TRect): TDataConverter;



end;
und dann definierst Du


Delphi-Quellcode:
TKeller = class(TObject)

  procedure Push(const aData : TDataConverter);
end;
bei der impliziten Typumwandlung (danach lässt sich suchen im Forum) .. müsstest Du Dir dann merken, welchen Typ aData darstellen soll, müsstest dann den Integer speichern oder eben auch den Pointer auf die TStringlist .. je nach Datentyp .. und je nach Datentypen, die Du unterstützen möchtest.
Aber die paar Grunddatentype und TObject sollte reichen.

und wenn die procedure Push aufgerufen wird, dann steht in aData drin, was es für ein Typ ist, den Du speichern musst ...
So würde ich das machen, wenn ich in Zukunft nie wieder Arbeit haben will und nicht mehr nachdenken möchte
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#26

Re: Einen Keller in Delphi Programmieren

  Alt 29. Apr 2009, 08:05
Es geht dem Threadersteller wohl um das Prinzip aufzuzeigen, wenn ich das richtig verstehe.
In diesem Fall würde ich eigene Datentypen Kreieren und als Stack eine TObjectList nehmen.



Delphi-Quellcode:

type TDataType =(dtObject, dtString, dtInteger, ....);

type
 TBaseType = class
   property Value: Pointer ....
   property DataType: TDataType ....
end;
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#27

Re: Einen Keller in Delphi Programmieren

  Alt 29. Apr 2009, 09:51
Zitat von stoxx:
Und das Array müsste dann ja auch einen Typ haben.
joar, drinnen muß man dann natürlich speichern was es ist.

statt TDataConverter könnte man auch überladene Funktionen/Prozeduren nutzen,
dieses würde dann auch unter älterten Delphi-Versionen (vor TD/D2006) laufen, wo es noch keine Operatoren gab.

Delphi-Quellcode:
TDataType = (dtInteger, dtRect, dtObject, usw.);
TData = record
  FType : TDataType;
  FIntegerValue: Integer;
  FTRectValue: TRect;
  Object: TObject;

  usw ...
end;

TKeller = class(TObject)

  procedure Push(const aData: Integer); Overload;
  procedure Push(const aData: TRect); Overload;
  procedure Push(const aData: TObject); Overload;
  ...
  procedure Pop(const aData: Integer); Overload;
  procedure Pop(const aData: TRect); Overload;
  procedure Pop(const aData: TObject); Overload;
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Einen Keller in Delphi Programmieren

  Alt 29. Apr 2009, 11:29
Zitat:
Delphi-Quellcode:
...
  procedure Push(const aData: Integer); Overload;
  procedure Push(const aData: TRect); Overload;
  procedure Push(const aData: TObject); Overload;
  ...
  procedure Pop(const aData: Integer); Overload;
  procedure Pop(const aData: TRect); Overload;
  procedure Pop(const aData: TObject); Overload;
end;
Mit dem oberen stimme ich dir ja zu nur das untere?!?!


Ich würde es mal so versuchen:

Delphi-Quellcode:
  TDataType = (vString,vInteger,...);

  TData = record
    case DataType: TDataType of
      vString : (vString : PAnsiString);
      vInteger : (vInteger: Integer);
      vSingle : (vSingle : Single);
  end;
MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#29

Re: Einen Keller in Delphi Programmieren

  Alt 29. Apr 2009, 11:38
Zitat von olee:
nur das untere?!?!Ich würde es mal so versuchen:
vom Prinzip her würde ich es auch so machen, aber gerade wegen des Strings hatte ich lieber erstmal das Andere vorgeschlagen ... nicht daß er sich da dann noch ein Speicherleck einbaut ... dieses ganze Rumgepointere ist nicht immer so vorteilhaft.
(und wenn man das Ganze auf weniger einheitliche Basistypen runterkürzt, dann wäre de Record auch nicht sooo groß)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 17:36 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