Recent

Author Topic: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem [SOLVED]  (Read 4120 times)

totya

  • Hero Member
  • *****
  • Posts: 720
Hi!

TsWorksheetGrid

Code: Pascal  [Select][+][-]
  1. Grid.LoadFromSpreadsheetFile(UTF8ToAnsi(AFileName));

It's working. But:

Code: Pascal  [Select][+][-]
  1. Grid.LoadFromSpreadsheetFile(UTF8ToAnsi(AFileName), 0);

doesn't work, the compiler say:
Quote
Error: Can't determine which overloaded function to call

LOL.

This method available in fpspreadsheetgrid:

Code: Pascal  [Select][+][-]
  1. procedure LoadFromSpreadsheetFile(AFileName: string; AWorksheetIndex: Integer = -1); overload;

What's wrong here?

Thanks!
« Last Edit: September 25, 2016, 10:44:40 pm by totya »

wp

  • Hero Member
  • *****
  • Posts: 11857
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem
« Reply #1 on: September 25, 2016, 10:32:26 pm »
OMG! Too many overloads from ancient times... The problem occurs because TsSpreadFormatID is just an alias for an integer, and thus the compiler cannot distinguish whether the second parameters means the file format id or the worksheet index.

I removed one of the overloads, and LoadFromSpreadsheetFile works now with all parameter counts. But note that the overload specifying only the sheet index but not the (user-defined) format is no longer available now.

Code: Pascal  [Select][+][-]
  1.     procedure LoadFromSpreadsheetFile(AFileName: string;
  2.       AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = -1); overload;
  3.  
  4.     procedure LoadFromSpreadsheetFile(AFileName: string;
  5.       AFormatID: TsSpreadFormatID = sfidUnknown;
  6.       AWorksheetIndex: Integer = -1); overload;

totya

  • Hero Member
  • *****
  • Posts: 720
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem
« Reply #2 on: September 25, 2016, 10:44:23 pm »
Hi!

Now, if I want to open one worksheet, and I don't know what is the type of the file, this format needed:

Code: Pascal  [Select][+][-]
  1. Grid.LoadFromSpreadsheetFile(UTF8ToAnsi(AFileName), sfidUnknown, WSNum);

Thanks! :)

wp

  • Hero Member
  • *****
  • Posts: 11857
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem [SOLVED]
« Reply #3 on: September 25, 2016, 11:08:08 pm »
Yes. What if I add a LoadSheetFromFile(AFileName, ASheetIndex: Integer -1; AFormatID: Integer = sfidUnknow)?

Then you could call
  • LoadFromSpreadsheetFile(AFileName), or LoadSheetFromFile(AFileName) -- for active sheet and automatic format detection
  • LoadSheetFromFile(AFilename, ASheetIndex) -- for specified sheet and automatic format detection
  • LoadSheetFromFile(AFilename, ASheetIndex, AFormatID) -- for specified sheet and specified format
        the same with LoadFromSpreadsheetFile(AFileName, AFormatID)
  • LoadFromSpreadsheetFile(AFileName, AFormatID) -- for specified format and active sheet

totya

  • Hero Member
  • *****
  • Posts: 720
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem [SOLVED]
« Reply #4 on: September 25, 2016, 11:20:25 pm »
That's a good idea, works similar as the last deleted method... :)

wp

  • Hero Member
  • *****
  • Posts: 11857
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem [SOLVED]
« Reply #5 on: September 25, 2016, 11:37:34 pm »
It's in r5212. I just renamed it to LoadSheetFromSpreadsheetFile (to be more consistent with the others).

totya

  • Hero Member
  • *****
  • Posts: 720
Re: TsWorksheetGrid.LoadFromSpreadsheetFile overloaded problem [SOLVED]
« Reply #6 on: September 26, 2016, 12:25:10 am »
It's in r5212. I just renamed it to LoadSheetFromSpreadsheetFile (to be more consistent with the others).

Thanks, its working (after few recompile, my app see this new method).

 

TinyPortal © 2005-2018