Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel OLE, Version 2007 erkennen (https://www.delphipraxis.net/137551-excel-ole-version-2007-erkennen.html)

hoika 23. Jul 2009 10:39


Excel OLE, Version 2007 erkennen
 
Hallo #,

folgender Code soll erkennen, ob es sch beim aktuellen Excel um 2007
oder kleiner handelt.
Das StringGrid wird bei <2007 auf die maximal erlaubten 256 Spalten "reduziert".

Problem ... es klappt nicht ! ;(

sVersion:= XLApp.Version;
sVersion ist '9.0' (Excel 2000)

TryStrToFloat(sVersion, dVersion) schläft fehl ???


dVersion:= XLApp.Version;

dVersion liefert 90 (statt 9.0).


Was mache ich falsch ?
Gibt es vielleicht einen Befehl (MaxColumnCount) oder so,
damit ich mir das ganze Gewurschtel hier sparen kann ?


Danke


Heiko



Delphi-Quellcode:
var
  XLApp       : OLEVariant;
  sVersion    : OleVariant;
  dVersion    : Double;
begin
  Result:= False;

  try
    // Create Excel-OLE Object
    Result := False;
    XLApp := CreateOleObject('Excel.Application');
    try
     { until Excel2007 (version 12) we have maximal 256 columns }
      if AGrid.ColCount>256 then
      begin
        iMaxCols:= 256;
      end
      else
      begin
        iMaxCols:= AGrid.ColCount;
      end;

      try
        sVersion:= XLApp.Version;
        dVersion:= sVersion;
        if TryStrToFloat(sVersion, dVersion) then
        begin
          if dVersion>=12 then
          begin
            iMaxCols:= AGrid.ColCount;
          end;
        end;
      except
      end;

deadcantdance 23. Jul 2009 10:44

Re: Excel OLE, Version 2007 erkennen
 
Probier mal

Delphi-Quellcode:
function GetVersion : integer;
var
  Version : string;
  MSExcel : Variant;
begin
  MSExcel := CreateOleObject('Excel.application');
  Version := MSExcel.Version;
  SetLength(Version, 2);
  result := StrToInt(trimchar(Version,'.'));
end;
So klappts bei mir. Liefert nur die Hauptversionsnummer, aber das reicht doch für die Versionsfeststellung.

hoika 23. Jul 2009 10:59

Re: Excel OLE, Version 2007 erkennen
 
Hallo,

ich Dussel.
Die ganze Zeit fummel ich mit Punkt und Komma rum.

Lösung


Delphi-Quellcode:
sVersion2: String

try
        sVersion:= XLApp.Version;
        sVersion2:= sVersion;

        sVersion2:= StringReplace(sVersion2, '.', ',',
          [rfReplaceAll]);
        if TryStrToFloat(sVersion2, dVersion) then
        begin
          if dVersion>=12 then
          begin
            iMaxCols:= AGrid.ColCount;
          end;
        end;
      except
      end;

Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz