Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Variants und Arrays (https://www.delphipraxis.net/180604-variants-und-arrays.html)

matashen 2. Jun 2014 17:04

Variants und Arrays
 
Hallo,

ich bekomme von einer dll ein Array in Form eines Variants. Im PDF zur dll ist das so beschrieben für VB

GetBarcodeReturn the barcode if detected. To use GetBarcode, the barcode reading functionality needs to be
enabled by BarcodeInit method.

Code:
Function GetBarcode () As Variant
Dim aa As Variant
BarCodeReturn = v.GetBarcode
List1.Clear
VarType (BarCodeReturn)
If UBound(BarCodeReturn) >= LBound(BarCodeReturn) Then
For f = LBound(BarCodeReturn) To UBound(BarCodeReturn)
List1.AddItem BarCodeReturn(f, 0) 'BarCodeString
List1.AddItem BarCodeReturn(f, 1) 'BarCode Type
List1.AddItem BarCodeReturn(f, 2) 'BarCode Orientation.
List1.AddItem BarCodeReturn(f, 3) 'BarCode Location
Next f
End If
Wie setz ich das in Delphi um?
was ich bisher versucht habe ist leider misslungen und zu Variants hab ich nichts brauchbares im Netz/Forum gefunden.

bisheriger Code (nur das wesentliche, rest rausgeschmissen wegen Übersicht)
Delphi-Quellcode:
var aa:variant;
..
aa:=video.GetBarcode;
if varisarray(aa) then begin
 if VarArrayHighBound(aa, 1)>VarArrayLowBound(aa, 1) then
   
  for I := VarArrayLowBound(aa, 1) to VarArrayHighBound(aa, 1) do
      begin    
             label12.Caption:=vararrayget(aa,i);
Wenn ich die Größe des Array auslesen will und das Ergebnis in ein Memo schreibe bekomme ich nur Low=0 und High=0 oder Low=0 und High=-1
Delphi-Quellcode:
memo1.Lines.Add(inttostr(VarArrayLowBound(aa, 1)));
    memo1.Lines.Add(inttostr(VarArrayHighBound(aa, 1)));

matashen 3. Jun 2014 13:44

AW: Variants und Arrays
 
*push*

immer noch aktuell, keiner eine Idee?

Dejan Vu 3. Jun 2014 14:30

AW: Variants und Arrays
 
Probier mal VarArrayLock/VarArrayUnlock. Damit sollte/könnte das gehen...

himitsu 3. Jun 2014 15:06

AW: Variants und Arrays
 
Ist das auch ein zwei-/mehrdimensionalas Array?

Delphi-Quellcode:
VarArrayLowBound(DasArray, DieEbene)
und die 1. Ebene/Dimension wird bestimmt 0 sein.

matashen 3. Jun 2014 16:04

AW: Variants und Arrays
 
Zitat:

Zitat von himitsu (Beitrag 1261221)
Ist das auch ein zwei-/mehrdimensionalas Array?

Delphi-Quellcode:
VarArrayLowBound(DasArray, DieEbene)
und die 1. Ebene/Dimension wird bestimmt 0 sein.

nein, bei Variants beginnt die 1. Ebene bei eins, ist nicht 0-basiert

das stimmt schon, gerade extra nochmal in der Hilfe nachgeguckt.
Zitat:

Der Parameter Dim ist für die erste Dimension 1, für die zweite Dimension 2 usw

matashen 3. Jun 2014 16:06

AW: Variants und Arrays
 
Zitat:

Zitat von Dejan Vu (Beitrag 1261212)
Probier mal VarArrayLock/VarArrayUnlock. Damit sollte/könnte das gehen...

Hat nichts gebracht, löste Fehler aus: "Unerwarteter Variant Fehler"

Dejan Vu 4. Jun 2014 08:48

AW: Variants und Arrays
 
Vielleicht hilft das hier:
http://www.gekko-software.nl/Delphi/art08.htm

matashen 4. Jun 2014 09:17

AW: Variants und Arrays
 
Den Link kannte ich noch nicht ich seh mir das mal an, dankeschön.

Meld mich dann bei Fragen / oder bei Lösung des Problems wieder.

Gruß Matthias


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