Hi,
ich bin gerade ein wenig über die Compileroptimierung verwundert. Folgender Source (die mit * markierten Zeilen haben einen blauen Punkt von Delphi bekommen):
Delphi-Quellcode:
repeat
{*} frmSelectDrive.ShowModal;
{*} FDrive := frmSelectDrive.DriveLetter;
{*} FDatabaseFilename := FDrive + szDatabasePath;
{*} FFilebase := FDrive + szFilebasePath;
{*} if FileExists(FDatabaseFilename) then
break;
{*} case MessageDlg(szNoHDD060, mtError, [mbAbort, mbRetry], 0) of
mrAbort:
begin
{*} Close;
break; {<--}
end;
end;
until false;
Die mit dem Pfeil markierte Zeile hat keinen Punkt, also könnte man sie doch eigentlich aus dem SourceCode rausnehmen, weil sie eigentlich ausgeführt wird. Wenn ich das aber machen, verfängt sich das Programm in der Endlosschleife (auch die Message-Box wird nicht immer angezeigt und das angezeigte Formular flackert).
Irgendwie optimiert der Compiler hier auf zwei verschiedene Art und Weisen. Aber wenn er die Zeile sowieso übergeht, dann ändert sie doch nichts, oder?
Chris