AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme mit eigener Klasse und suchen in Array
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit eigener Klasse und suchen in Array

Ein Thema von hadschi92 · begonnen am 20. Apr 2009 · letzter Beitrag vom 20. Apr 2009
Antwort Antwort
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#1

Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:14
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:
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;
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.

Wie kann ich sonst noch nach Pixel in dem Array suchen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:18
Durch sequentielles Durchsuchen. IN ist nur für Mengen nicht für Arrays
Markus Kinzler
  Mit Zitat antworten Zitat
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#3

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:25
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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:29
Ja, statt untere Grenze 0 aber besser Low() verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#5

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:39
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:
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;
Ich kann Aktive_Pixel[I] nicht mit Pixel vergleichen...
Aber Aktive_Pixel[I] kann ich einen Wert von Pixel zuweisen:
Aktive_Pixel[High(Aktive_Pixel)] := Pixel; Irgendwie blick ich da jetzt nicht durch
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 18:53
Du musst x und y einzeln vergleichen oder den Speicher direkt vergleichen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 19:03
Oder der Klasse eine Vergleichsmethode spendieren
Markus Kinzler
  Mit Zitat antworten Zitat
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#8

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 20:50
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 20:58
In D2009 kann man Records mit Klassenoperatoren erweitern. In diesem Fall wäre der Operator Equal interessant.
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Probleme mit eigener Klasse und suchen in Array

  Alt 20. Apr 2009, 21:01
Delphi 2006 genügt.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz