Autor Beitrag
bennixview
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

Win Linux
Delphi Kylix
BeitragVerfasst: Di 27.07.04 11:10 
Hi, ich bastle mir zur Zeit einen Logger der beliebige Properties eines Objects speichern soll.
Ich weiß nicht ob mein ansatz wirklich gut ist aber im Moment gehe ich wie folgt vor:

Ich habe eine TLogItem (Class) mit den Feldern Name:String und Value: String (Das ist ok denn ich bekomme die Daten per XML.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
TLogItem = class(TPersistent)
  private
    FName: string;
    FValue: string;
    procedure SetName(const Value: string);
    procedure SetValue(const Value: string);
  protected
  public
    property Name: string read FName write SetName;
    property Value: string read FValue write SetValue;
  end;


So, JETZT KOMMT DER KNACKPUNT ;-), nun möchte ich ein Dynamisches Array als Property basteln. (IST DAS SINVOLL ???) Allerdings soll dies kein normalen INDEX haben sondern vom Typ TDateTime :-) da ich zu bestimmten zeitpunkten im Programm die eigenschaften von Objekten loggen möchte. Das sieht dann ungefair so aus :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 property LogItems[d: TDateTime]: TLogItem read GetLogItem write SetLogItem; default;

 function TVACLogger.GetLogItem(d: TDateTime): TLogItem; 
 begin
 end;

 procedure TVACLogger.SetLogItem(d: TDateTime; const Value: TLogItem);
 begin
 end;


NAJA aber ich weiß nicht wirklich weiter wie ich das jetzt in den Get / Set Methoden implementieren soll. Ist das überhaupt so richtig oder gibts dafür nen besseren ansatz???
Dr. Phil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Di 27.07.04 11:37 
Also Arrays haben immer Indezes. :?
Meinst du als Index TDateTime?
Das ist nicht möglich, nein :wink:
Ein Array muss immer einen ganzzahligen Index haben, damit er weiß auf das wieviele Element er zugreifen soll.

Stell dir vor, du sagst demm Array: Greif auf das Element Nr. 27.07.2004 zu!
Der scheisst dir was :wink:

Aber wahrscheinlich hab ich dich jetzt falsch verstanden. :roll:

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden
bennixview Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27

Win Linux
Delphi Kylix
BeitragVerfasst: Di 27.07.04 12:34 
Mh, ich dachte mit das wäre die einfachste methode die jeweiligen LogItems mit einer LogZeit zu referenzieren.
Denn wenn ich die Zeit in den Items Speicher dann muss ich ja danach suchen und das kostet zeit!
Dr. Phil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Di 27.07.04 12:50 
Du könntest ja in deinem TLogItem die Values und Names als Arrays machen, und dann machst du dazu noch einen Array mit dem Typ TDateTime, und kannst dann schön danach sortieren.
Also wenn beim Dreieckstausch dtTime[1] und dtTime[2] vertauscht werden (so hab ich den Array jetzt mal genannt), tauscht du einfach auch Values[1] und Values[2], sowie Names[1] und Names[2] aus.

Aber ich weiß ja nicht was du genau brauchst, also ist das wahrscheinlich nciht die optimalste Lösung.

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Di 27.07.04 13:04 
Array-Properties können jeden beliebigen Typ haben. Ich hab letztens sogar eine Klasse als Indextyp benutzt ;)
Implentieren musst du es folgendermaßen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
  TMyClass = class
  private
    function GetItem(Index: TDateTime): TIrgendwas;
  public
    property Item[Index: TDateTime): TIrgendwas read GetItem;
  end;

function TMyClass.GetItem(Index: TDateTime): TIrgendwas;
begin
  //Hier nun das gewünschte Element ermitteln und zurückgeben
end;

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
Dr. Phil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 66

Win XP
Delphi 7 Prof.
BeitragVerfasst: Di 27.07.04 13:24 
Gut, das wusste ich nicht.
Wer kommt denn schon auf sowas :roll:

Und jetzt geh ich zu meinem Info-Lehrer und lach ihn aus.

_________________
self-improvement is masturbation;
self-destruction is the answer - Tyler Durden