Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kleinster Wert in set (https://www.delphipraxis.net/28072-kleinster-wert-set.html)

Stevie 19. Aug 2004 12:00


Kleinster Wert in set
 
Hi Leute,

ich hab folgendes:
Delphi-Quellcode:
var Indizes: set of 1..20;
Ich möchte gerne den kleinsten Wert herausfinden, der in der Menge ist. Irgendwie hab ich nix dazu gefunden?! :wall: :gruebel:

Shaman 19. Aug 2004 12:05

Re: Kleinster Wert in set
 
Delphi-Quellcode:
var
  I: Integer;
begin
  for I:= 1 to 20 do
    if I in Indizes then Break;
  Caption:= IntToStr(I);
end;
Gruss
Shaman

Stevie 19. Aug 2004 12:07

Re: Kleinster Wert in set
 
:roll: Jaaaa, das ist nur ein Beispiel, wenn ich jetzt set of 1..30 hab??? Gibt's nicht was generisches?

Shaman 19. Aug 2004 12:10

Re: Kleinster Wert in set
 
Wie ist denn deine allgemeine Deklaration von Indizes?

Shaman 19. Aug 2004 12:16

Re: Kleinster Wert in set
 
Sonst mach halt
Delphi-Quellcode:
for I:= 1 to SizeOf(Indizes) shl 3 do
  if I in Indizes then Break;

Stevie 19. Aug 2004 12:20

Re: Kleinster Wert in set
 
Ich hab's jetzt so gemacht:
Delphi-Quellcode:
type
  TSortiIndizes = 1..20;
  TSortiSet = set of TSortiIndizes;
var
  Indizes: TSortiSet;
Dann kann ich an eine Prozedur einen Parameter vom Typ TSortiSet übergeben...

Aber sets sind doch eigentlich Bit-Flags (oder so, das ist nicht so mein Bereich :mrgreen:)
Kann man dann nicht - egal welcher Typ - irgendwie herausfinden, welcher Wert der kleinste ist?

Ungefähr so (ich weiß, nicht ganz richtig):
Delphi-Quellcode:
funktion Min(pSet: pointer; pSetTyp: pointer): Integer;
Und diese Funktion ermittelt dann das Minimum?

P.S. Was macht denn
Delphi-Quellcode:
for I:= 1 to SizeOf(Indizes) shl 3 do
  if I in Indizes then Break;

Shaman 19. Aug 2004 12:35

Re: Kleinster Wert in set
 
Delphi-Quellcode:
type
  TSortiIndizes = 1..20;
  TSortiSet = set of TSortiIndizes;
var
  Indizes: TSortiSet;
  I: TSortiIndizes
begin
  for I:= TSortiIndizes(0) to TSortiIndizes(SizeOf(Indizes) shl 3 - 1) do
    if I in Indizes then Break;
end;
Das sollte das machen, was Du willst. I ist dann das kleinste Element.

Gruss
Shaman

maximov 19. Aug 2004 12:39

Re: Kleinster Wert in set
 
Da gibt es ein bessere variante, die ohne das gekröse mit sizOf auskommt:

Delphi-Quellcode:
type
  TSortiIndizes = 1..20;
  TSortiSet = set of TSortiIndizes;
var
  Indezes: TSortiSet;
  i:TSortiIndizes;
..
for i := low(i) to high(i) do
  if i in Indezes then break;
:-D

Shaman 19. Aug 2004 12:44

Re: Kleinster Wert in set
 
Ist doch langweilig so :wink:

glkgereon 26. Feb 2006 18:30

Re: Kleinster Wert in set
 
Ich grab den Thread nochmal aus...weil es um was ganz ähnliches geht^^
ich habes folgendes Konstrukt:

Delphi-Quellcode:
Bereich: Set of Char = ['a'..'Z'];
wobei es halt unterschiedlich sein kann...könnte auch ['c'..']'] sein...

und brauche nun den höchsten und den niedrigsten wert...wäre auch egal wenn es der Ord() wäre oder ähnliches...

Wie mache ich das?

sakura 26. Feb 2006 19:06

Re: Kleinster Wert in set
 
Die Antwort steht schon im Thread :zwinker: Delphi-Referenz durchsuchenLow() und Delphi-Referenz durchsuchenHigh() sind die Stichworte.

...:cat:...

glkgereon 26. Feb 2006 19:17

Re: Kleinster Wert in set
 
Zitat:

Zitat von sakura
Die Antwort steht schon im Thread :zwinker: Delphi-Referenz durchsuchenLow() und Delphi-Referenz durchsuchenHigh() sind die Stichworte.

...:cat:...

ich mach dann das nächste mal die Augen auf :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 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