AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Wert [Word] in Liste/Array vorhanden
Thema durchsuchen
Ansicht
Themen-Optionen

Wert [Word] in Liste/Array vorhanden

Ein Thema von Alex_ITA01 · begonnen am 19. Dez 2013 · letzter Beitrag vom 21. Dez 2013
Antwort Antwort
Seite 1 von 3  1 23      
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:05
Hallo zusammen,
folgende Aufgabe:

Ich habe eine Variable vom Typ Word und möchte wissen, ob diese in einer bestimmten dynamisch langen Liste/Array vorhanden ist. Ich will nix sortieren oder sonst etwas. Nur wissen ob vorhanden.
Wie das geht, weiß ich.
Ich möchte eigentlich nur wissen, was wohl die eleganteste/schnellste Lösung von euch wäre?

Meine Lösungswege:

1)
Stringliste mit Aufnahme von den ganzen Einträgen als Integer. Meine Variable mit StringListe.IndexOf abfragen
2)
array of Integer und dieses bei der Abfrage durchsuchen

Habt ihr noch andere Ansätze?

Oder gibt es vielleicht sowas wie:
Delphi-Quellcode:
var
  MyValue : Word;
  MyFeld : array of Word;

if MyValue in MyFeld then
begin
  //Wert vorhanden
end;
Gruß
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:16
Methode 2 ist die einzig sinnvolle.
Die Stringliste macht intern nichts anderes als die Liste zu durchlaufen und nach dem String zu schauen der bei IndexOf angegeben wurde. Und Strings zu vergleichen ist sogar aufwendiger als Zahlen.

Brauchst ne einfache Funktion in der du per for-schleife dein Array nach dem Wert durchsuchst.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:26
Delphi-Quellcode:
var
      test2: Tlist<Word>;
      Myvalue: word;


//....

if test2.indexof(Myvalue) >= 0
then
begin
//VOrhanden
end;
Listen sind doch schon was tolles

oder muss das ein Array sein ?
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !

Geändert von Mokus (19. Dez 2013 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:36
Der IN-Operator geht nur für Byte (0..255), weshalb er auch nicht mehr für Unicode funktioniert.

Es gibt eine InArray-Suchfunktion für integer, aber ich weiß grade nicht wie die heißt und ob die in D2006 schon drin war. (mal in der Unit Math oder SysUtils suchen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:38
Also es muss kein Array sein...

Ich nutze XE4, vielleicht gibts da ja eine entsprechende Funktion?!

Eigentlich ist Integer auch nicht das richtige Format. Word reicht vollkommen, da es nur positive Zahlen von 0 bis max 9999 enthalten kann.

Gruß
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 11:45
Wäre für diese Aufgabe ein THashSet<T> nicht geeigneter?
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 12:05
ich würde die Unit ; "Generics.Collections" einbinden,
dir ne Liste erstellen die die nur Daten von Typ word aufnehmen kann, somit hast du eine Sicherheit, was in deiner Liste kommt, und musst
nicht noch erst schauen das es wirklich der richtige typ ist.

Delphi-Quellcode:
Var
DeineListeMitDenWert : TList<Word>;
MyValue: Word;
dann kannst du mit ner einfachen if abfrage schauen ob der Index größer gleich 0 ist, wenn ja ist der wert drin.

Delphi-Quellcode:
if DeineListeMitDenWert.indexof(MyValue) >= 0 then
begin
Showmessage('Der wert ist schon vorhanden, YOU WILL LOSE !');
end;
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 12:10
Delphi-Quellcode:
function DynWordArrContainsWord(const dynWordArr; value: Word): LongBool;
asm
  MOV EDI, [EAX]
  MOV ECX, [EDI-4]
  INC ECX
  MOV AX, DX
  REPNZ SCASW
  XCHG EAX, ECX
end;

// --

procedure main();
var
  i: Integer;
  a: Array of Word;
begin
  SetLengtH(a, 100);
  for i := 0 to high(a) do a[i] := i;
  writeln(DynWordArrContainsWord(a, 99));
  writeln(DynWordArrContainsWord(a, 100));
  readln;
end;
Code:
TRUE
FALSE
Grenzfälle: DynWordArr = NIL oder Length(DynWordArr) = 0
nicht abgefangen!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (19. Dez 2013 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 13:21
Wenn die im Profil angegebene Delphi-Version noch stimmt, fallen Generics eh unter den Tisch, da es die erst ab Delphi 2009 gibt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

AW: Wert [Word] in Liste/Array vorhanden

  Alt 19. Dez 2013, 13:29
Generics gibt es in meinem DELPHI2009 nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:40 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