Hallo zusammen,
warum zeigt der Taskmanager nach Beendigung der erzeugten Excelinstanz keine Änderung des Arbeitsspeichers an?
Folgendes mit XE3 erzeugtes Minimalprogramm:
Delphi-Quellcode:
unit Test_EXCEL_OLE;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
fExcel:Variant;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
begin
fExcel:=CreateOleObject('
Excel.Application');
fExcel.Application.SheetsInNewWorkBook:=3;
fExcel.Workbooks.Add;
fExcel.Sheets[1].
Name := '
Test';
fExcel.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if VarType(FExcel)<>varEmpty
then
begin
fExcel.Quit;
fExcel:=unassigned;
end;
end;
end.
Starte ich die Anwendung, zeigt der Taskmanager eine Belegung von 1.740K Arbeitsspeicher an.
Wird Button 1 gedrückt (zum Erstellen der Instanz mit sichtbarem Worksheet), zeigt der Taskmanager eine Belegung von 1.960K Arbeitsspeicher an.
Wird Button 2 gedrückt (Instanz schließen mit Quit und unassigned), bleibt der angezeigte Arbeitsspeicher ungefähr gleich (1.924K), hätte aber erwartet, den Ausgangswert von 1.740K wieder zu erreichen.
Kann jemand helfen?
VG ZYL