?
Hey , danke erstmal für die schnelle Antwort
hier mal ein ausgedünntes Beispiel:
Die Funktion NextMsg() wird von einer Applikation ( in einer Schleife ) aufgerufen und soll immer die nächste Nachricht liefern. In der while Schleife befindet sich normal noch eine Switch/Case Anweisung welche die einzelnen Nachrichtentypen unterscheidet. Die while Schleife dient dafür dass der gefundene Nachrichtentyp nicht korrekt sein sollte, die nächste Nachricht gelesen wird ( BLPeekObject ) bis eine korrekte Nachricht gefunden wird ( auf wunsch kann ich auch den Original Quellcode posten )
// Diese Variante funktioniert NICHT
unsigned int BLFReader::NextMsg()
{
unsigned int currentObj;
VBLObjectHeaderBase base; // Wird für das Nachrichtenobjekt benötigt
VBLFileStatisticsEx_t Statistics;
while(BLPeekObject(hFile, &base)) // Nachrichtentyp wird definiert
{
BLGetFileStatisticsEx( hFile, &Statistics);
// Hier ist normal noch eine Switch/Case Anweisung welche zwischen den einzelnen Nachrichtentypen
// unterscheidet und diese dann ausliest.
// Die Alternative ist BLSkipObject
BLSkipObject(hFile,&base); // Objekt wird übersprungen
}
return currentObj;
}
// Diese Variante funktioniert
unsigned int BLFReader::NextMsg()
{
unsigned int currentObj;
VBLObjectHeaderBase base; // Wird für das Nachrichtenobjekt benötigt
VBLFileStatisticsEx_t Statistics;
while(BLPeekObject(hFile, &base)) // Nachrichtentyp wird definiert
{
VBLFileStatisticsEx_t Statistics;
BLGetFileStatisticsEx( hFile, &Statistics);
// Hier ist normal noch eine Switch/Case Anweisung welche zwischen den einzelnen Nachrichtentypen
// unterscheidet und diese dann ausliest.
// Die Alternative ist BLSkipObject
BLSkipObject(hFile,&base); // Objekt wird übersprungen
}
return currentObj;
}