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 Quelle beschrieben wurde. 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 18:29 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