Ja, ich weiss, der Thread ist uralt, aber da ich gerade auf diese
Unit gestossen bin:
Folgendes ist ein Bugfix fuer auskommentierten Code (der wegen des Bugs auskommentiert wurde):
Delphi-Quellcode:
{Set FileTypes (either from Filter or FilterArray)}
if Length(Filter) > 0 then begin
aStringList := TStringList.Create;
try
ParseDelimited(aStringList, Filter, '|');
i := 0;
while i <= aStringList.Count - 1 do begin
SetLength(aFileTypesArray, Length(aFileTypesArray) + 1);
aFileTypesArray[Length(aFileTypesArray) - 1].pszName :=
StringToOleStr(aStringList[i]);
aFileTypesArray[Length(aFileTypesArray) - 1].pszSpec :=
StringToOleStr(aStringList[i + 1]);
Inc(i, 2);
end;
FileDialog.SetFileTypes(Length(aFileTypesArray), aFileTypesArray);
finally
for i := 0 to Length(aFileTypesArray) - 1 do begin
SysFreeString(aFileTypesArray[i].pszName);
SysFreeString(aFileTypesArray[i].pszSpec);
end;
aStringList.Free;
end;
Quelle:
http://stackoverflow.com/a/14309767/49925
(Noch ungetestet.)