AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: While Schleife

Ein Thema von Poring · begonnen am 15. Nov 2007 · letzter Beitrag vom 17. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#11

Re: Problem: While Schleife

  Alt 16. Nov 2007, 07:24
die IN-Variante geht nur mit Sets, da dürfen a, b, c nur ordinale Typen (Byte, Char) sein, aber keine Integer oder Strings.
Ne Variante wäre:
Delphi-Quellcode:
case a of
  b, c, d: Machwas
 else machnix
end
hier können auch Integer genommen werden.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Problem: While Schleife

  Alt 16. Nov 2007, 08:54
Hai,

warum nicht eine kleine Hilfsfunktion basteln?
Delphi-Quellcode:
function InArray(aValue: Integer; aArray: array of Integer): Boolean;
var
  i: Integer;
begin
  result := False;
  for i := Low(aArray) to High(aArray) do
  begin
    if (aValue = aArray[i]) then
    begin
      result := True;
      Exit;
    end;
  end;
end;

procedure TDemo_Form.Button1Click(Sender: TObject);
var
  a, b, c, d: Integer;
begin
  a := 1;
  b := 2;
  c := 3;
  d := 4;
  while InArray(a, [b, c, d]) do
  begin
  end;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
raiguen
(Gast)

n/a Beiträge
 
#13

Re: Problem: While Schleife

  Alt 16. Nov 2007, 09:08
Zitat von Progman:
die IN-Variante geht nur mit Sets, da dürfen a, b, c nur ordinale Typen (Byte, Char) sein, aber keine Integer oder Strings.
Ach... KEINE Integer und wieso funzt es dann bei mir, wenn ich für b, c, d nen Integer verwende ich verwende in zahlreichen Modulen meines umfangreichen Programmes mit dieser IN-Variante, um langwierige IF-Abfragen zu umgehen
[EDIT] @Sharky:
Code:
while a in [b, c, d]
funzt sehr wohl, wie ich in #12 beschrieben habe
[/EDIT]
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Problem: While Schleife

  Alt 16. Nov 2007, 09:15
Zitat von raiguen:
... und wieso funzt es dann bei mir, ...
Weil Integer zu den Ordinaltypen gehören Aber die Werte dürfen dann eigentlich nur zwichen 0 und 255 liegen und im Set können maximal 256 Werte vorhanden sein. (Wenn ich es richtig im Kopf habe)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Problem: While Schleife

  Alt 16. Nov 2007, 09:25
Zitat von Sharky:
Aber die Werte dürfen dann eigentlich nur zwichen 0 und 255 liegen und im Set können maximal 256 Werte vorhanden sein.
Richtig. Wenn die Werte aus Variablen kommen, kommt es zum Überlauf, bei Konstanten meckert der Compiler sofort, wenn zu große Werte angegeben werden.
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
raiguen
(Gast)

n/a Beiträge
 
#16

Re: Problem: While Schleife

  Alt 16. Nov 2007, 09:29
@Sharky: richtig! Also funzt das mit Integer genauso, allerdings nur bis zur 'Grenze' 255 Selbst bei Variablen, sofern der Wert eben diese Grenze nicht überschreitet.
  Mit Zitat antworten Zitat
Benutzerbild von LoCrux
LoCrux

Registriert seit: 5. Mär 2007
Ort: Gwang-Yang-City
48 Beiträge
 
Delphi 2009 Enterprise
 
#17

Re: Problem: While Schleife

  Alt 17. Nov 2007, 03:41
Mh....

auch mal senfen....

NEVER use Exit in your code! (Ich weiss, ist philosophisch und hart umstritten)

Abaenderung (sorry hab nur ne Koreanische Tastatur / kein Umlaute) der Funktion von Sharky.

Delphi-Quellcode:
function InArr(const val:Integer;arr:array of integer):Boolean;
var i:integer;
begin
  result := false;
  i := low(arr); // := 0;
  while (not(result) and (i<=high(arr))) do begin result := result or (val=arr[i]); inc(i); end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
  ar : array of integer;
begin
  setlength(ar,65536); // es geht auch noch groesser!!!
  for i := low(ar) to high(ar) do ar[i]:=random(MaxInt);
  if InArr(random(MaxInt),ar) then Button1.Caption:='INelse Button1.Caption:='NOT IN';
end;
“C++ is an insult to the human brain.” [Niklaus Wirth]

2B OR NOT 2B (.. THAT IS FF)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 22:55 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