Search code examples
delphiexport-to-excel

How to include a variable between strings in Delphi?


procedure TForm1.Button1Click(Sender: TObject);    
var    
   xlap,xlbook,xlsheet:variant;
   y:integer;
begin
   xlap:=createoleobject('excel.application');
   xlbook:=xlap.workbooks.add;
   xlap.visible:=true;
   xlsheet:=xlbook.worksheets.add;

   for y:=1 to 50 do
   begin 
    xlsheet.cells[y,2].value:= concat('=IF(A',y,'>6,"Good","Bad")')
    inc(y);
  end;
end;

That's my code to make an Excel through Delphi. I want to input the IF formula into column B of the Excel, but there is error when I use the concat('=IF(A',y,'>6,"Good","Bad")').

May be I need another way to include y between those strings.

Any suggestion? Thanks before


Solution

  • In addition to Tony's answer about Format, here are a couple of other approaches. (Format is great if you have mixed types or many values, but it carries some overhead that might not be needed.)

    You can concatenate strings with a simple + - in fact, the Concat documentation says it does the same thing but is faster:

    Temp := 'ing';
    Str := 'Test' +  Temp;   // Str = 'Testing'
    

    As your y variable is an integer, you'll need to convert it to a string first (note you don't need to Inc(y);, as the loop will do that already - it's automatically incremented from the starting value to the ending value on each pass through the loop):

    for y:=1 to 50 do
    begin 
      xlsheet.cells[y,2].value:= '=IF(A' + IntToStr(y) + '>6,"Good","Bad")';
    end;