Hallo,
Also es funktioniert nicht so ganz. Also bei mir funktionierts (D2k9), aber TurboDelphi meckert:
Zitat:
[Pascal Fehler] UWerkzeuge.pas(89): E2089 Ungültige Typumwandlung
Und zwar ist das in der ersten If-Bedingung und auch in der zweiten.
Delphi-Quellcode:
function GibExcelVersion : TExcelVersion;
var
tmp : TGUID;
begin
// Test auf MSO 2k3 / MSO 2k7
Result := evKeine;
if Succeeded(CLSIDFromProgID(PWideChar('Excel.Application.11'), tmp)) then
Result := ev2003
else if Succeeded(CLSIDFromProgID(PWideChar('Excel.Application.12'), tmp)) then
Result := ev2007;
end;
Wenn man das aber "aufteilt" also etwa so:
Delphi-Quellcode:
var
s : string;
pw : PWideChar;
i : Integer;
begin
s := 'Excel.Application.11';
pw := PWideChar(s);
i := CLSIDFromProgID(pw, tmp);
if Succeeded(i) then
Das liefert keinen Fehler, aber das liefert auch kein Succeeded.
Ich muss dazu sagen, dass die aufgeteilte Version so sein sollte, aber ich kann dafür meine Hand leider nicht ins Feuer legen
MfG
xZise