![]() |
Delphi-Version: 10 Berlin
Wert von SET OF mit case abfragen?
Hallo,
ich habe das:
Delphi-Quellcode:
und ich möchte jetzt mit einer Case-Struktur auf den Inhalt von Errors reagieren, wo zB nur drinsteht:
procedure TForm1.ComPort1Error(Sender: TObject; Errors: TComErrors);
// TComError = (ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull); // TComErrors: set of TComError; var s:shortstring; begin
Code:
Wie mache ich das? :pale:
Errors = [ceBreak]
Delphi-Quellcode:
case Errors of
ceFrame: s:='Mist'; ceBreak: s:='Abbruch'; end; |
AW: Wert von SET OF mit case abfragen?
Wie das mit einem Case gehtfunktioniert, weiß ich nicht. Aber es funktioniert so ja auch
Delphi-Quellcode:
In einem Set können ja mehrere Dinge stehen. Daher ist ein Case eh unangebracht.
if TComErrors.ceRxParity in Errors then
showmessage('ceRxParity in Set'); if TComErrors.ceBreak in Errors then showmessage('ceBreak in Set'); Wenn du im Parameter Errors aber eh immer nur EINE Sache drin stehen hast, dann brauchst du kein Set dafür. Dann also so:
Delphi-Quellcode:
case Errors oF
TComErrors.ceRxParity: showmessage('ceRxParity in Set'); TComErrors.ceBreak : showmessage('ceBreak in Set'); end; |
AW: Wert von SET OF mit case abfragen?
Ich würde das mit
Delphi-Quellcode:
machen.
if ceBreak in Errors then...;
if ceFrame in Errors then...; Eine Case-Anweisung prüft ja nur bis zur ersten Übereinstimmung. Danach wird der Caseblock verlassen. Weitere Übereinstimmungen würden nicht geprüft. In C++ könnte man das mit case machen. Aber in Pascal ist das mit Case nicht vorgesehen. |
AW: Wert von SET OF mit case abfragen?
Delphi-Quellcode:
kann nur einen einzigen Fall ausführen, weshalb sich die einzelnen Bereiche auch nicht überlappen dürfen. Bei einem
case
Delphi-Quellcode:
wären mehrere Fälle auszuführen, was also nicht geht. Darüber hinaus ist ein
set
Delphi-Quellcode:
kein Ordinaltyp, was
set
Delphi-Quellcode:
ebenfalls verlangt.
case
|
AW: Wert von SET OF mit case abfragen?
Hey, danke schön.
ich habe es jetzt mit der
Code:
-Methode gemacht. So kann ich die Fehler für die Ausgabe dann auch in einem String aneinanderreihen, falls es mehrere Probleme gibt.
if TComError.ce... in Errors then
Code:
geht nicht, weil Errors kein Ordnialtyp ist.
Case Errors of
Die Anzahl der Elemente in Errors bekommt man ergänzend so heraus, wie in dieser ![]() Ich seh aber gerade, daß die verwendete Komponente eine Funktion
Code:
für die Ausgabe hat :oops: - aber für mein Verständnis war der Thread trotzdem wertvoll :thumb:
ComErrorsToStr(Errors:TComErrors)
|
AW: Wert von SET OF mit case abfragen?
Es gibt übrigens doch eine Möglichkeit, die mir gerade eingefallen ist und zwar mit
Delphi-Quellcode:
... Tut genau, was du willst.
for in do case of
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 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