![]() |
Länge eines "Variant array of variant" (?) bestimm
Hallo zusammen,
ich habe das Problem, dass ich nicht die leiseste Ahnung habe, wie ich die Anzahl der von LinkSources* zurückgegebenen Einträge in der Variante vLinks ermitteln soll:
Delphi-Quellcode:
In VBA macht man das mit UBound(vLinks), aber UBound gibt's ja in Delphi nicht - oder?
procedure TfMain.UpdateLinks(FileName: TFileName);
var vExcel: Variant; vWorkbook: Variant; vWorksheet: Variant; vLinks: Variant; i: Integer; begin vExcel := CreateOleObject('excel.application'); vWorkbook := vExcel.WorkBooks.Open(FileName,0); vLinks := vWorkbook.LinkSources(1); for i := 1 to High(vLinks) do ShowMessage(vLinks[i]); vWorkbook.Close(SaveChanges:=false); vExcel.Quit; vExcel := UnAssigned; end; High(vLinks) geht definitiv nicht in Delphi, vLinks.Count auch nicht. ich habe auch versucht, das Ganze zu casten:
Delphi-Quellcode:
funktioniert auch nicht...
procedure TfMain.UpdateLinks(FileName: TFileName);
type TMyArrayOfVariant = array of variant; var ... myLinks: TMyArrayOfVariant; begin ... myLinks := TMyArrayOfVariant(vLinks); ... end; Hat irgendjemand eine Idee? Danke schon jetzt! Freejay *LinkSources liefert die in einem Excel-Sheet verknüpften Dateien zurück. |
Re: Länge eines "Variant array of variant" (?) bes
Da UBound eine Methode von/für SafeArrays zu sein scheint, tippe ich mal auf die VarArrayXxx-Funktionen (VarArrayHighBound - ruft intern OLEs 'SafeArrayGetUBound' auf ;)).
|
Re: Länge eines "Variant array of variant" (?) bes
Super! Damit geht's! Da wär ich nie drauf gekommen...
Vielen Dank! Gruß Freejay |
Re: Länge eines "Variant array of variant" (?) bes
Dafür gibt’s das Forum ;)
Viel Erfolg. |
Re: Länge eines "Variant array of variant" (?) bes
Hallo freejay,
eine Anmerkung zu der Variablen deklaration. Statt Variant, sollte man bei OLE-Automatisierung besser OLEVariant einsetzen. Bis bald Chemiker |
Re: Länge eines "Variant array of variant" (?) bes
Danke für den Tipp.
Gibt's da außer der Genauigkeit der Typbezeichnung einen Unterschied zu Variant? |
Re: Länge eines "Variant array of variant" (?) bes
Variant ist variabel
|
Re: Länge eines "Variant array of variant" (?) bes
Laut Hilfe kann ein OleVariant keine programmspezifischen Typen enthalten. Während beispielsweise von IDispatch abgeleitete Interfaces oder Widestrings also immer erlaubt sind, kann ein OleVariant im Gegensatz zum Variant keine Ansistrings oder andere Typen, die durch Ableitung von TCustomVariantType entstanden sind, enthalten.
|
Re: Länge eines "Variant array of variant" (?) bes
OleVariant wird einfach ein wenig anders gespeichert. OleVariant kann von jeder anderen Prograqmmiersprache benutzt werden. Variant ist delphispezifisch. Damit ergeben sich die Sachen, die Apollonius genannt hat. Bei den meisten Sachen merkt man innerhalb Delphi keinen Unterschied.
|
Re: Länge eines "Variant array of variant" (?) bes
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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-2025 by Thomas Breitkreuz