Einzelnen Beitrag anzeigen

Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#1

Mehere Elemente eines Feldes löschen durch überschreiben?

  Alt 21. Nov 2007, 23:26
Hallo, ich bin gerade dabei mit Arrays zu arbeiten und nun bin ich auf die Sache gestoßen wie man löschen kann. Allerdings soll in meiner Ausgabe (Listbox) ja dann keine freistelle sein, sondern einfach der naechste wert den gelöschten wert ueberschreiben!
Ok hört sich ziemlich seltsam an, ich probiers mal kurz an nem bsp zu erlaeutern:

Index des Feldes : 1 2 3 4 5
Zahl des Feldes : 3 2 4 2 6

Wenn ich jetzt mag das die Zahl 2 gelöscht wird dann würde ja 3 '' 4 '' 6 und ich mag halt das
3 4 6 da steht.. und natuerlich nur die indizies 1-3

geklappt hat dies alles auch wunderbar wenn die zahl nur 1x vorkommt, allerdings sobald es oefter gelöscht werden muss bin ich am scheitern..

bis her sieht meine prozedure so aus


const af=5;


Delphi-Quellcode:
procedure loeschen(var j:integer);
var i:integer; //Zaehlervariable
begin
for i:=j to af-1 do
a[i]:=a[i+1];
a[af]:=0;
dec(af);
end;
j is einfach der Index wo die 2 steht, gesucht wurde diese stelle durch eine lineare suche...

so das war jetzt fuer 1 element löschen und nun hab ich das so geschrieben fuer mehere

Delphi-Quellcode:
procedure var1(var a:ta; var af:integer; key:te);
var i,temp,afneu:integer;
begin
afneu:=af;
temp:=0;
for i:=1 to af do
if uppercase(a[i]) = uppercase(key) then begin
for temp:=i to af do
  a[temp]:=a[temp+1];
  a[afneu]:=' ';
  dec(afneu);
  end
funzt aber nicht, könntet ihr mir vllt verraten wie das geht?
aber bitte sagt mir nicht das ich einfach ne andere art von löschen benutzen soll, andere varianten habe ich schon, ich brauch halt nur noch diese
  Mit Zitat antworten Zitat