![]() |
Probleme mit eigener Klasse und suchen in Array
Ich will überprüfen, ob ein Wert bereits in einem Array vorhanden ist, jedoch bringt der Compiler bei mir einen Fehler. Kann es sein, dass man mit "if x in array" nur Zahlen in Arrays finden kann?
Mein Code sieht so aus:
Delphi-Quellcode:
Ich habe wie gesagt einen Array (Aktive_Pixel) und will darin schauen ob Pixel vorkommt. Der Compiler bringt mir dann den Fehler: E2015 Operator ist auf diesen Operandentyp nicht anwendbar.
procedure TForm1.Button4Click(Sender: TObject);
type TPixel = record A: Integer; B: Integer; end; var Aktive_Pixel: array of TPixel; Pixel: TPixel; begin if Pixel in Aktive_Pixel then begin SetLength(Aktive_Pixel, Length(Aktive_Pixel)+1); Aktive_Pixel[High(Aktive_Pixel)] := Pixel; end; end; Wie kann ich sonst noch nach Pixel in dem Array suchen? |
Re: Probleme mit eigener Klasse und suchen in Array
Durch sequentielles Durchsuchen. IN ist nur für Mengen nicht für Arrays
|
Re: Probleme mit eigener Klasse und suchen in Array
Also mit einer Schleife? In etwa so:
Delphi-Quellcode:
for i := 0 to High(Aktive_Pixel) do
if Aktive_Pixel[I] = Pixel then Result := true else Result := false; |
Re: Probleme mit eigener Klasse und suchen in Array
Ja, statt untere Grenze 0 aber besser Low() verwenden
|
Re: Probleme mit eigener Klasse und suchen in Array
Ok, Low() wird wohl das unterste Element sein.
Er will aber immer noch nicht, immer beklagt er sich, bei mir sieht das jetzt so aus:
Delphi-Quellcode:
Ich kann Aktive_Pixel[I] nicht mit Pixel vergleichen...
for I := Low(Aktive_Pixel) to High(Aktive_Pixel) do
if Aktive_Pixel[I] = Pixel then In_Array := true; if not In_Array then begin SetLength(Aktive_Pixel, Length(Aktive_Pixel)+1); Aktive_Pixel[High(Aktive_Pixel)] := Pixel; end; Aber Aktive_Pixel[I] kann ich einen Wert von Pixel zuweisen:
Delphi-Quellcode:
Irgendwie blick ich da jetzt nicht durch
Aktive_Pixel[High(Aktive_Pixel)] := Pixel;
|
Re: Probleme mit eigener Klasse und suchen in Array
Du musst x und y einzeln vergleichen oder den Speicher direkt vergleichen.
|
Re: Probleme mit eigener Klasse und suchen in Array
Oder der Klasse eine Vergleichsmethode spendieren
|
Re: Probleme mit eigener Klasse und suchen in Array
Ok, ich habe jetzt Pixel.A und Pixel.B direkt verglichen, damit wäre das Problem gelöst.
Nur interessehalber, wie kann ich den Speicher direkt vergleichen und mit was ist eine "Vergleichsmethode spendieren" gemeint? |
Re: Probleme mit eigener Klasse und suchen in Array
In D2009 kann man Records mit Klassenoperatoren erweitern. In diesem Fall wäre der Operator Equal interessant.
|
Re: Probleme mit eigener Klasse und suchen in Array
Delphi 2006 genügt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz