Warum ist dieser Code korrekt?
-
Hallo!
Beim Überarbeiten eines Quellcodes ist der folgende Schrott im Programm stehen geblieben. (Ursprünglich wurde der Wert aus der Registry mit sprintf an die Variable übergeben. Nach Typänderung sollte es eigentlich AnsiString.Konform passieren.
Bei diesem Registryeintrag ist was schiefgelaufen, wahrscheinlich kam eine Kaffeepause dazwischen.HinweisMemo->Lines->Add("BlaBlaBla"); MolFileDownloadServer[iLoop].Name, "%s", mollist->ReadString("MOLFILES", Key, ""); HinweisMemo->Lines->Add(MolFileDownloadServer[iLoop].Name); //Noch ein paar richtig eingelesene Registrydaten HinweisMemo->Lines->Add("BlaBlaBla");Die Frage ist allerdings, warum wird dieser Code seit etwa Mai 2006 vom Compiler ohne Fehlermeldung akzeptiert?
Der Müll ist garantiert nicht auskommentiert.
Die beiden Texte "BlaBlaBla" werden in das Memofeld geschrieben.
Mir ist das zu hoch.
Hat hier jemand eine Idee warum das keinen Fehler, noch nicht mal eine Warnung gab?
Danke
-
Falls du die zweite und dritte Zeile deines Beispiels meinst:
Ausdrücke durch Komma zu trennen ist zwar unüblich aber Standard-konform (Siehe Abschnitt 5.18 Comma operator im Standard).
Ausdrücke mit Operatoren ohne Wirkung sollten die Warnung W8019 verursachen aber das funktioniert (im BCB6) offenbar nicht. Für Ausdrücke ohne Wirkung, die keinen Operator beinhalten, ist offenbar keine Warnung vorgesehen, obwohl W8019 imho hier auch passen würde.