![]() |
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. |
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? |
Re: OleVariant auf 'nil' prüfen
Delphi-Quellcode:
if VarIsNull(VVariable) then ...
|
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.
|
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? |
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. |
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 10:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz