Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OleVariant auf 'nil' prüfen (https://www.delphipraxis.net/61132-olevariant-auf-nil-pruefen.html)

orchanin 17. Jan 2006 13:06


OleVariant auf 'nil' prüfen
 
Hi, Zusammen

in meinem programm verwende ich MSProject als COM objekt.
Logischerweise habe ich eine variable ('MSProject') von type Variant angelegt, um die zugriffe zu steuern.
Im MSProjekt alle Vorgänge werden in tabellarische form zusammengefasst. Zwischen den vorgengen kann auch lehre zeile
(ein art von 'nil'- vorgang) sein.

Wenn ich über eine schleife durch alle vorgänge durchgehe
(z.B: for i:= 1 to MSProject.ActiveProject.Tasks[i].Name) und auf so eine lehre zeile stosse,
bringt mir das Programm eine fehlermeldung, was klar ist, weil MSProject.ActiveProject.Tasks[i] = nil.
Die frage ist wie kann ich das abfangen?
if MSProject.ActiveProject.Tasks[i] = nil then... geht nicht, da MSProject von type Variant ist.

Danke.

Bernhard Geyer 17. Jan 2006 13:07

Re: OleVariant auf 'nil' prüfen
 
Du kannst die Konstante UnAssigned nehmen.

Aber wieso importierst du dir nicht Die Typbibliothek und verwendest dann die frühe Bindung?

Nightshade 17. Jan 2006 13:10

Re: OleVariant auf 'nil' prüfen
 
Delphi-Quellcode:
 if VarIsNull(VVariable) then ...

orchanin 17. Jan 2006 13:18

Re: OleVariant auf 'nil' prüfen
 
Ich habe versucht, aber witz dabei ist das diese variable (für die lehre zeile) hat eine adresse ($000000), auf die nicht zugegriffen werden kann. Also sie ist nicht ganz lehr.

orchanin 17. Jan 2006 13:23

Re: OleVariant auf 'nil' prüfen
 
Noch ein paar wörtchen dazu.
Ich habe in VB Code (Makros) ausprobiert. Dort benutzt man für die überprüfung 'Is Nothing'-routiene
If Not (ActiveProject.Tasks(i) Is Nothing) Then... Das geht
Aber wie setze ich das in delphi um?

NicoDE 17. Jan 2006 15:01

Re: OleVariant auf 'nil' prüfen
 
Das kommt auf den jeweiligen Typ an.
Sieh dir mal in der Delphi-Hilfe folgendes an: VarIsClear, VarIsEmpty, VarIsNull und Unassigned.

Ferber 17. Jan 2006 15:18

Re: OleVariant auf 'nil' prüfen
 
Dieser CodeSchnipsel hilft vielleicht. Greife so auf Excel zu.
Delphi-Quellcode:
function TExcel.GetApplication:Variant;
begin
  if VarType(FExcelApp)=varEmpty then
  try
    FExcelApp:=GetActiveOleObject('Excel.Application');
    FExcelApp.Visible:=True;
  except
    FExcelApp:=  CreateOleObject('Excel.Application');
    FExcelApp.Visible:=True;
  end;
  Result:=FExcelApp;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 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