Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen? (https://www.delphipraxis.net/183597-delphifunktion-um-die-laenge-eines-array-einem-array-variant-zu-bestimmen.html)

BadenPower 21. Jan 2015 20:03

Delphi-Version: 2007

Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Hallo zusammen,

ich habe jetzt stundenlang gesucht, aber bin nicht fündig geworden.

Gibt es in Delphi keine Funktion, um die Länge eines Array in einem "Array of Variant" zu bestimmen?

Also so etwas wie:

Delphi-Quellcode:
Länge := Length(VarArray[0]);

Dies funktioniert natürlich nicht.

implementation 21. Jan 2015 20:18

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Zitat:

Zitat von BadenPower (Beitrag 1287343)
Delphi-Quellcode:
Länge := Length(VarArray[0]);

Kleine Veränderung:
Delphi-Quellcode:
Laenge := Length(VarArray); // Ohne [0]

BadenPower 21. Jan 2015 20:24

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Zitat:

Zitat von implementation (Beitrag 1287345)
Kleine Veränderung:
Delphi-Quellcode:
Laenge := Length(VarArray); // Ohne [0]

Das ergibt die Länge des Arrays und nicht die Länge des Arrays, welches im Array unter dem ArrayIndex 0 liegt.

Sir Rufo 21. Jan 2015 20:26

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
http://www.delphipraxis.net/808-vari...verstehen.html ;)

BadenPower 21. Jan 2015 20:29

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1287347)

Schöner Link. Zeigt aber keine Funktion mit welcher man die Länge auslesen kann.

Sir Rufo 21. Jan 2015 20:34

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Zitat:

Zitat von BadenPower (Beitrag 1287349)
Zitat:

Zitat von Sir Rufo (Beitrag 1287347)

Schöner Link. Zeigt aber keine Funktion mit welcher man die Länge auslesen kann.

Immer hübsch de Äuglein uffmache
Zitat:

Zitat von jbg (Beitrag 6348)
Nach kurzen Stöbern in der OnlineHilfe:
VarArrayDimCount, VarArrayHighBound, VarArrayLowBound

http://docwiki.embarcadero.com/Libra...rArrayDimCount

BadenPower 21. Jan 2015 20:52

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1287351)
Immer hübsch de Äuglein uffmache
Zitat:

Zitat von jbg (Beitrag 6348)
Nach kurzen Stöbern in der OnlineHilfe:
VarArrayDimCount, VarArrayHighBound, VarArrayLowBound

http://docwiki.embarcadero.com/Libra...rArrayDimCount

Diese Funktionen kenne ich zur Genüge.

VarArrayDimCount:
Gibt die Anzahl der Dimensionen zurück, aber nicht die Arraylänge.
Löst beim Aufruf von Array[0] eine Exception wenn das Array die Länge 0 hat.

VarArrayLowBound:
Gibt nur den niederen Indexwert aus.

VarArrayHightBound:
Gibt nur den höchsten Indexwert aus, oder auch nicht, wenn das Array die Länge 0 hat.

Sir Rufo 21. Jan 2015 21:02

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Tja, da wirst du wohl mal folgendes machen müssen:

Poste den Code der das Problem zeigt
Teile uns die Exception mit (CopyPaste der Meldung)

Dann schauen wir weiter

BadenPower 21. Jan 2015 21:29

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
hier einmal ein wenig Testcode:

benötigt
1x Form
1x Button
4x Label

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type
  TMyVarArray = Array of Variant;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}



function LocalNewArray(): TMyVarArray;
begin
  //Result := VarArrayCreate([-3,-2],varVariant);
  //Result := VarArrayCreate([0,5],varVariant);
  SetLength(Result,0);


end;

procedure TForm1.Button1Click(Sender: TObject);
var
  lArray1: Array of Variant;
  lArray2: Array of Variant;
begin

  lArray1 := VarArrayCreate([0,5],varVariant);
  //SetLength(lArray1[0],0);
  lArray1[0] := VarArrayCreate([-3,-2],varVariant);
  lArray1[0][-2] := 'Test';

  lArray2 := VarArrayCreate([0,10],varVariant);
  lArray2[0] := VarArrayCreate([0,10],varVariant);
  //lArray2[0] := LocalNewArray();
  //SetLength(lArray2[0],0);

  try
    Label1.Caption := lArray1[0][-2];
    //Label1.Caption := IntToStr(Length(lArray1));
  except
    Label1.Caption := 'Fehler';
  end;

  try
    Label2.Caption := IntToStr(Length(lArray2));
  except
    Label2.Caption := 'Fehler';
  end;

  try
    //Label3.Caption := IntToStr(VarArrayHighBound(lArray1[0],1));
    Label3.Caption := IntToStr(VarArrayDimCount(lArray1[0]));
    //Label3.Caption := IntToStr(Length(lArray1[0]));
    //Label3.Caption := IntToStr(High(lArray1[0]));
  except
    Label3.Caption := 'Fehler';
  end;

  try
    //Label4.Caption := IntToStr(VarArrayLowBound(lArray2,2));
    //Label4.Caption := IntToStr(VarArrayHighBound(lArray2,2));
    //Label4.Caption := IntToStr(VarArrayLowBound(lArray2[0],1));
    //Label4.Caption := IntToStr(VarArrayHighBound(lArray2[0],1));
    //Label4.Caption := IntToStr(VarArrayDimCount(lArray2[0]));
    Label4.Caption := IntToStr(Length(lArray2[0]));
    //Label4.Caption := IntToStr(High(lArray2[0]));
  except
    Label4.Caption := 'Fehler';
  end;



end;

end.

implementation 21. Jan 2015 21:33

AW: Delphifunktion um die Länge eines Array in einem "Array of Variant" zu bestimmen?
 
Man könnte den Testcode ja mal so ergänzen, dass er auch die tatsächliche Fehlermeldung ausgibt ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.
Seite 1 von 3  1 23      

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