Ich weiß nicht was ihr habt?
Es ist alles ganz eindeutig, also immer das Letzte wird zuerst genommen.
Und bei mehrfachen Angaben im WITH können die auch aufeinander aufbauen, was auffällt, wenn man weiß, dass
Delphi-Quellcode:
with DIB, dsbm, dsbmih do
// entspricht
with DIB do
with dsbm do
with dsbmih do
Aber so kann das doch keiner mehr lesen.
Delphi-Quellcode:
if (DIB.dsbmih.biSize <> 0) and ((DIB.dsbmih.biWidth = 0) or (DIB.dsbmih.biHeight = 0)) then Exit;
if (DIB.dsbmih.biSize = 0) and ((DIB.dsbm.bmWidth = 0) or (DIB.dsbm.bmHeight = 0)) then Exit;
Zum Glück haben die Felder der
WinAPI-Records hier zur Abwechslung mal keine Typ-Prefixe (Type des Feldes), sondern Klassen-Prefixe (Name des Parent-Records),
womit man sofort erkennt, was von dsbm/BITMAP > bm und was vom dsbmih/BITMAPINFOHEADER > bi kommt.