btw: Natürlich funktioniert das Programm (= der Quellcode) jetzt nicht mehr, wenn man nicht Delphi 6 oder 7 hat. Ist ja auch logisch. Wie ich schon schrieb, sind die Versionen vor D6 zu alt und kennen nur das Standardrecord, und durch
ofn.lStructSize := SizeOf(TOpenFilename) - (SizeOf(DWORD) shl 1) - SizeOf(Pointer);
bzw.
ofn.lStructSize := OPENFILENAME_SIZE_VERSION_400;
werden nun davon noch zwei DWORDs und ein Pointer abgezogen. Damit stimmt die Originalgröße nicht mehr, und die Dialoge erscheinen bei älteren Delphi-Versionen nicht. Du musst dich also tatsächlich an die Idee aus dem Forum halten:
Delphi-Quellcode:
if(Win2k) or (WinXP) then ofn.lStructSize := sizeof(TOpenFilename)
else ofn.lStructSize := OPENFILENAME_SIZE_VERSION_400;
oder du probierst dein Glück mal mit dem schon erwähnten "OPENFILENAME_NT4"-Record, sofern es von Borland deklariert wurde.
Ja, ich weiß: du hattest das bereits gestern (~17 Uhr) geschrieben. Ich wollte also nur noch mal sagen, dass diese Idee also schon die richtige war. Gerade in Bezug auf ältere Delphi-Versionen. Ich habe sie nur nicht berücksichtigt, weil du mir deinen Quellcode ja zwecks Fehlersuche zur Verfügung gestellt hast.
Die von tommie-lie vorgeschlagene "Lösung",
pauschal (ohne Versionsprüfung) die Größe zu verringern, halte ich deswegen auch für falsch.