Delphi-PRAXiS
Seite 1 von 6  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   array[1..10] auf Wert prüfen? (https://www.delphipraxis.net/197487-array%5B1-10%5D-auf-wert-pruefen.html)

MicMic 9. Aug 2018 19:42

Delphi-Version: 5

array[1..10] auf Wert prüfen?
 
Hallo,
ich habe beispielsweise ein "array[1..10] of boolean".
Kann man die ggf. komplett auf den Wert "True" prüfen? Könnte mir vorstellen, dass dies geht.

Ich mache es halt gerade so (als Beispiel):
Code:
 var w : array[1..10] of boolean;
 ...
 if (w[1] = true) and (w[2] = true) and ... then alles_ist_auf_true();
Bestimmt ist Delphi so klug, dass dies auch einfacher geht :)

Michael

zeras 9. Aug 2018 19:59

AW: array[1..10] auf Wert prüfen?
 
Auf true solltest du nie abtesten, einfach

Delphi-Quellcode:
if w[1] and w[2] usw.


Vielleicht hilft auch eine Schleife weiter, wenn du einmal die Anzahl der zu prüfenden Objekte änderst.

hoika 9. Aug 2018 20:04

AW: array[1..10] auf Wert prüfen?
 
Hallo,

Delphi-Quellcode:
b:= True;
for i:= Low(w) to High(w) do
begin
  if not w[i] then
  begin
    b:= False;
    break;
  end;
end;

Jumpy 10. Aug 2018 08:34

AW: array[1..10] auf Wert prüfen?
 
Oder noch eine Variante

Delphi-Quellcode:
b:= True;
for i:= Low(w) to High(w) do
  b := b and w[i];

Ydobon 10. Aug 2018 09:50

AW: array[1..10] auf Wert prüfen?
 
Oder so vielleicht?
Delphi-Quellcode:
var testFeld, jajajaFeld: Array[1..10] of Boolean;
begin
  ...
  FillChar(jajajaFeld, 10, true);
  if CompareMem(@jajajaFeld, @testFeld, 10) then ShowMessage('Ups');

freimatz 10. Aug 2018 14:55

AW: array[1..10] auf Wert prüfen?
 
Sehr gut:thumb: Das kann super als schlechtes Beispiel dienen. :oops:

Neutral General 10. Aug 2018 15:03

AW: array[1..10] auf Wert prüfen?
 
Zitat:

Zitat von freimatz (Beitrag 1410338)
Sehr gut:thumb: Das kann super als schlechtes Beispiel dienen. :oops:

Begründung?

freimatz 10. Aug 2018 15:39

AW: array[1..10] auf Wert prüfen?
 
Es verletzt mehrere Clean-Code Regeln (KISS, "Vorsicht vor Optimierungen!", POLS), ist nicht evolvierbar und fehleranfällig.
Die Varianten von hoika und Jumpy haben diese Probleme nicht.

MicMic 10. Aug 2018 20:08

AW: array[1..10] auf Wert prüfen?
 
Danke für die Tipps.
Ich dachte ja, es gibt sowas wie "if w[1..10] = true" oder statt ".." vielleicht "-" oder "/". Aber so eine For-Schleife (3 Zeiler von @Jumpy) ist ja auch recht klein. Danke an alle.

@zeras
Aber wieso sollte man nicht auf "true" prüfen (if variable=true then), sprich eher nur "if variable then" nehmen?

Michael

KodeZwerg 10. Aug 2018 20:15

AW: array[1..10] auf Wert prüfen?
 
Nimm lieber eine auf False Prüfen Variante wie diese hier, damit wird es nie zu Problemen kommen.
Zitat:

Zitat von hoika (Beitrag 1410264)
Delphi-Quellcode:
b:= True;
for i:= Low(w) to High(w) do
begin
  if not w[i] then
  begin
    b:= False;
    break;
  end;
end;

False kann/sollte immer nur 0 ergeben, True kann vieles sein.


edit
also auf code Ebene runtergeschraubt
Delphi-Quellcode:
  if not w[i] then
//
  if w[i] = 0 then
..
  if w[i] then
//
  if w[i] > 0 then
Beim kompilieren hat Delphi Wert 1 für True, aber nicht alle Trues sind 1, verstehst Du was ich damit sagen will?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 1 von 6  1 23     Letzte »    

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