Die Ursache war einfach die neue und auch sinnvolle Erweiterung des TRect um Width und Height, die gab es halt zum Zeitpunkt der Erstellung noch nicht. Mal sehen, was die weitere Umstellung auf XE2 noch an Überraschungen bringt, die meisten Sachen laufen aber ohne Probleme. Anders sieht es bei Fremdkomponenten aus wie z.B. die DLLLoader.pas (BASS), die ich in älteren Spielen für die mp3-Wiedergabe nutze. Hier schmiert das Programm direkt beim Start ab, bleibt aber noch im Task-Manager drin.
Delphi-Quellcode:
IF ASSIGNED(Stream)
THEN BEGIN
Stream.Seek(0, soFromBeginning);
IF Stream.Size>0
THEN BEGIN
IF ReadImageHeaders
THEN BEGIN
IF InitializeImage
THEN BEGIN
IF ReadSections
THEN BEGIN
IF ProcessRelocations
THEN BEGIN
IF ProcessImports
THEN BEGIN
IF ProtectSections
THEN BEGIN
IF InitializeLibrary
THEN BEGIN // Exception
IF ProcessExports
THEN BEGIN
RESULT:=TRUE;
END;
END;
END;
...
Hier die entsprechende Function:
Delphi-Quellcode:
FUNCTION InitializeLibrary:BOOLEAN;
BEGIN
RESULT:=FALSE;
@DLLProc:=ConvertPointer(ImageNTHeaders.OptionalHeader.AddressOfEntryPoint);
IF DLLProc(CARDINAL(ImageBase),DLL_PROCESS_ATTACH,NIL) THEN BEGIN
RESULT:=TRUE;
END;
END;
Aber das wäre nicht ganz so gravierend, da die Spiele nicht weiterentwickelt werden.