Autor Beitrag
mars
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Fr 28.02.03 00:58 
Ist es möglich, etwas zu erstellen, der folgende Eigenschaften hat?

Aufbau ungefähr wie Typ set: dh. Ich brauche das Schlüsselwort "in" und ich sollte Objekte hinzufügen und wegnehmen können, aber im Unterschied zum Typ set sollten die Objekte eine Reihenfolge einhalten, über einen Index abrufbar sein und es sollten auch 2 gleiche Objekte vorkommen dürfen.
Wie realisiert man das? Gehe ich richtig in der Annahme, dass ich da mit Objekten und Klassen arbeiten muss?[/list][/list]
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Fr 28.02.03 08:20 
Na wenn du Objekte hinzufügen willst, dann musst du auch mit Klassen arbeiten.
Für dein Vorhanden ist ein Array oder eine TObjectList (Unit Contnrs) wohl angebracht. Beim Array musst du eben selbst suchen. Bei TObjectList gibt es die Methode IndexOf.

_________________
Ist Zeit wirklich Geld?
mars Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Fr 28.02.03 09:01 
Leider verstehe ich dich nicht ganz :cry:. Nehmen wir an, die Objekte seien Integerwerte. Muss ich dann immer noch mit Klassen arbeiten? (Sorry, ich verstehe es wirklich nicht...) Ich möchte einfach Integerwerte in einer Liste haben mit einer bestimmten Reihenfolge und folglich auch mit einem Index. Zusätzlich möchte ich ein Objekt so wegnehmen können, dass die anderen automatisch nachrücken und die Lücke füllen...Keine Ahnung ob das verdeutlichte, was ich vorhabe :?
Danke jedenfalls für die schnelle Antwort. Über etwas mehr Hilfe würde ich mich aber auch freuen.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Fr 28.02.03 14:08 
Zitat:
Nehmen wir an, die Objekte seien Integerwerte.

..ähm...objecte können keine integer werte seien. Ein object ist eine instanze einer bestimmten klasse und integer ist keine klasse, sondern eine stink normale variable.

Wenn du nur eine liste mit intergern haben willst, dann erstell dir ein array-typ:
ausblenden Quelltext
1:
2:
3:
4:
5:
type TIntArr: array of integer;
var intArr : TIntArr;
...
setLength(intArr, {zB} 100-1); // setzt die anzahl der werte auf 100
intArr[50] := 3772;


vielleicht hilft das weiter.
mfg mx.
mars Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: Sa 01.03.03 20:37 
maximus hat folgendes geschrieben:
Zitat:
Nehmen wir an, die Objekte seien Integerwerte.

..ähm...objecte können keine integer werte seien. Ein object ist eine instanze einer bestimmten klasse und integer ist keine klasse, sondern eine stink normale variable.


Das ist mir ja schon klar, aber AndyB hat von Objekten geredet und da wollte ich ihm zeigen, dass es sich nur um Integerwerte handelt

Zitat:

Wenn du nur eine liste mit intergern haben willst, dann erstell dir ein array-typ:
ausblenden Quelltext
1:
2:
3:
4:
5:
type TIntArr: array of integer;
var intArr : TIntArr;
...
setLength(intArr, {zB} 100-1); // setzt die anzahl der werte auf 100
intArr[50] := 3772;


vielleicht hilft das weiter.
mfg mx.


Also ich glaube soweit bin ich in Delphi auch schon gekommen :wink: . Ich glaube ihr versteht mein Problem nicht...Vielleicht bin ich nicht sehr geschickt im Erklären... :cry: Dann mach ichs selber.

(Wenn jemand mein Problem verstanden hat und eine Lösung hat, soll er also ruhig posten :) )
Nightmare_82
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 260



BeitragVerfasst: Do 27.03.03 16:05 
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
type

TIntList = class
private

m_arInt : array of Integer;

public


procedure add(p_iValue : Integer);

function indexOf(p_iValue : Integer) : Integer;

function getCount : Integer;

procedure reset;

end;

implementation

procedure TIntList.add(p_iValue : Integer);
begin
setLength(m_arInt, length(m_arInt + 1);
m_arInt[high(m_arInt)]:= p_iValue;
end;

function TIntList.indexOf(p_iValue : Integer) : Integer;
VAR
i : Integer;
begin
Result:= -1;

for i:= low(m_arInt) to high(m_arInt) do
if m_arInt[i] = p_iValue then
begin
Result:= i;
exit;
end;
end;

function TIntList.getCount : Integer;
begin
Result:= length(m_arInt);
end;

procedure TIntList.reset;
begin
setLength(m_arInt, 0);
end;


Wenn ich dich richtig verstanden habe, sucht du sowas?

Habe es nicht getestet aber sollte funktionieren.