Formate überprüfen bringt Fehler
-
Hallo,
ich möchte gern Formate von Variablen überprüfen, nur wenn alle gleich sind, soll die Anwendung weiter ausgeführt werden, mein Ansatz ist:
//Formate werden abgefragt llFrameFormat_t InFormat = In->frameformat; llFrameFormat_t OutFormat = Out->frameformat; llFrameFormat_t AddFormat = Add->frameformat; llFrameFormat_t MultFormat = Mult->frameformat; if(InFormat == OutFormat == AddFormat) { //weitere Funktionen }Allerdings bringt es mir den Fehler: Illegal structure operation in der if() Zeile.
Was ist daran falsch?
-
bin mir net ganz sicher, aber probiers mal so:
if((InFormat == OutFormat) == AddFormat)alternativ muss das gehen:
if((InFormat == OutFormat) && (OutFormat== AddFormat))
-
bei
if(InFormat == OutFormat)kam derselbe Fehler, aber so wirklich weiß ich noch nicht warum, weil meiner Meinung nach sollte das schon gehen oder?
-
Ist der == Oparator bei dem Typ llFrameFormat_t überhaupt vorhanden?
-
darin kann natürlich der fehler liegen, aber das kann ich nicht zu 100% sagen, weil ich in einem Projekt von jemand anders arbeite. Aber ich werde mal auf die Suche gehen, vielleicht find ich ja was dazu raus! Danke dir erstmal!
-
so ist das angelegt:
typedef struct llFrameFormat_tag { llPixelFormat_t id_format; u_int32_t cnt_width; u_int32_t cnt_height; }llFrameFormat_t;
-
Das sieht dann eher nicht so aus, als wäre der Operator == überladen... Dann kann das auch nicht funktionieren...
-
Ok danke. Muss dann mal sehen wie ich das irgendwie anders teste
-
Wenn Du die Struktur nicht ändern / ergänzen darfst, würde ich eine Vergleichsfunktion schreiben, der Du die beiden ll_FrameFormat_t Objekte übergibst und dort die einzelnen Werte vergleichst..
-
Nein ich glaube ich darf dort nichts verändern kann aber auch nicht fragen, da derjenige im Urlaub ist.
Könntest du mir vielleicht deinen Vorschlag etwas näher erläutern, denn so ganz habe ich noch nicht verstanden was du machen möchtest. Würde mich sehr freuen.Meinst du es in etwa so:
void Vergleich(llFrameFormat_t AddFormat, llFrameFormat_t InFormat, llFrameFormat_t OutFormat) { }?? Und wenn ja was müsste dann in die Funktion hinein?
-
also erstmal sollte deine Funktion was zurückliefern, also
bool Vergleich(llFrameFormat_t AddFormat, llFrameFormat_t InFormat, llFrameFormat_t OutFormat) { .... }und nun zum Inhalt: (ewas Umständlich, aber dafür leicht zu verstehen
)if (AddFormat.id_format!= InFormat.id_format) return false; if (AddFormat.id_format!= OutFormat.id_format) return false; if (AddFormat.cnt_width!= InFormat.cnt_width) return false; if (AddFormat.cnt_width!= OutFormat.cnt_width) return false; if (AddFormat.cnt_height!= InFormat.cnt_height) return false; if (AddFormat.cnt_height!= OutFormat.cnt_height) return false; return true;
-
Ja das sie was zurück geben muss ist mir auch schon eingefallen
Aber zum Inhalt, das versteh ich nciht wirklich, weil ich muss doch überprüfen ob In, Out & Add vom gleichen Format sind und ein gültiges Format haben und dann muss ich noch prüfen ob Mult vom Format Dword ist, also sah es erst so aus:llError Vergleich(llFrameFormat_t AddFormat, llFrameFormat_t InFormat, llFrameFormat_t OutFormat, llFrameFormat_t MultFormat) { llError result; if((AddFormat != llDword) && (AddFormat != llInvalidConversion) && (InFormat != llDword) && (InFormat != llInvalidConversion) &&(OutFormat != llDword) && (OutFormat != llInvalidConversion)) { if(AddFormat == InFormat == OutFormat) { if(MultFormat == llDword) { result = llSuccess; } } } return result; }so geht es ja aber nicht. Also müssen diese Vergleiche doch irgendwie umgeschrieben werden oder seh ich das jetzt komplett falsch? Benötige ich denn jetzt hier das cnt_width und cnt_height?
-
Was willst du überhaupt?
Die ID's geben doch das an was du willst, anders kannst du doch den Typ net überprüfen
-
Habs jetzt so:
if(AddFormat.id_format == InFormat.id_format == OutFormat.id_format) { result = llSuccess; }damit überprüfe ich aber erstens noch nicht ob das Format gültig ist (also es darf nicht llDword und llInvalidConversion sein) und zweitens kann ich damit ja auch noch nicht überprüfen ob MultFormat.id_format == llDword ist, denn das soll es ja sein. Ich will ja nicht nur wissen ob es wirklich dieselben Formate sind, sondern bei den ersten 3en (Add, In & Out) dürfen 2 Formate nicht vorkommen und bei Mult darf nur das eine Format vorkommen!