Autor Beitrag
IhopeonlyReader
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Sa 28.07.12 22:44 
Guten Tag... schön vor sich hin Programmiert, fällt plötzlich auf, dass ich nicht weiß, um welchen Array es in derProzedure gerade geht... Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//in Prozedure 1
For C:=1 to 10 do
 begin
 BeispielArray[C].Prozedure2;
 end;

//in Prozedure 2
procedure Beispiel.Prozedure2;
begin
Showmessage('Der BeispielArrayIndes ist'+ ???);
end;


ich kenne dazu mehrere Möglichkeitne:
1. Bei dem Constructor einbauen, welcher Index es ist
Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
constructor Beispiel.Create(derIndex: Integer);
begin
BeispielIndex := derIndex; //BeispielIndex wäre dann eine privat Variable der Klasse Beispiel
end;
//Dann wäre es möglich in Porzedure2 folgendes zu schreiben
Showmessage('Der BeispielArrayIndes ist'+ IntToStr(BeispielIndex));


Eine Andere nöglichkeit wäre die oben verwendete counter variable (in diesem Fall C) mit zu übergeben
dann säh prouedure 2 so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//Prozedure 1
For C:=1 to 10 do
 begin
 BeispielArray[C].Prozedure2(C);
 end;

//in Prozedure 2
procedure Beispiel.Prozedure2(derIndex: Integer);
begin
Showmessage('Der BeispielArrayIndes ist'+ IntToStr(derIndex));
end;


Edit:
Oder man ändert eine schon vorhandene Variable, guckt weleche sich verändert hat (in dem man vorher und nacher alle durchgeht) und setz sie dannach wieder zurück... aber das ist ebenfalls sehr umstädnlich

aber ich denke, dass es einfacher geht oder? gibt es dazu eine Feste Variable/Konstante?

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 28.07.12 23:12 
Wenn ein Objekt seinen Index in einer übergeordneten Struktur für eine bestimmte Prozedur wissen muss, dann ist das imho nicht ganz sauber konzeptioniert. ;-)

Eine Notlösung hst du schon genannt - über den zusätzlichen Parameter. Das zusätzliche Feld im Konstruktor zu befüllen halte ich für arg ungeeignet, denn das dürfte später zu merkwürdigen Fehlern führen (z.B. wenn das Array verändert wird).

Besser wäre vermutlich, die "Prozedure2" als Methode einer passenden Array-Klasse zu gestalten, die die "Beispiel"-Objekte verwaltet und damit direkt auch die Indizes kennen kann.

_________________
We are, we were and will not be.
IhopeonlyReader Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 600
Erhaltene Danke: 23


Delphi 7 PE
BeitragVerfasst: Sa 28.07.12 23:24 
die Prozedure 2 liegt jetz da wo auch der Aufruf stattfindet, daher kenn ich den Index nicht..

ebenfalls wird Prozedure 2 aber bei mir auch von einer anderen Klasse aufgerufen, hierzu wird der Index IMMER schon mit übergeben...

Beispiel
ausblenden Delphi-Quelltext
1:
2:
3:
For C:=1 to 100 do
if X then 
handeln(C);


allerdings:
wird in einer zu der selben Klasse wie handeln gehörend handeln auch auferufen.. hier war der Index nicht bekannt..

ich habe das ganze jetz mit overload gelöst...

wenn sie nicht aus derseben klasse kommen, gib ich den Index an, wenn es aus der selben Klasse kommt, lass ich sie weg, denn da brauch ich dann ha nichts zum aufrufen...

_________________
Sucht "neueres" Delphi :D
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!