AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

variantes Array aus Longs?

Offene Frage von "thomasch"
Ein Thema von thomasch · begonnen am 29. Jun 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2   
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#1

variantes Array aus Longs?

  Alt 29. Jun 2005, 14:07
Hallo,
Delphi kennt den wunderschönen Datentypen varInt64. Leider bekomme ich bei
Delphi-Quellcode:
var
bla: Variant;
begin

bla:=VarArrayCreate([0,0],varInt64);
Die Meldung
Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EVariantArrayCreateError aufgetreten. Meldung: 'Fehler beim Erzeugen von Variante oder sicherem Array'.
Wie komme ich denn nun zu meinem Array aus longs?
(ja, es müssen longs sein)

genervte Grüße


Thomasch
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 15:39
muss es denn unbedingt nen variantes array sein?
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#3

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 16:12
Wo ist das Problem?
long = DWORD = Cardinal = 32 bit, warum dann Int64?

Ansonsten probiers mal mit varDouble, das hat auch 8 Byte = 64 bit.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 16:45
Ich habe mir den Quelltext der Funktion VarArrayCreate() angesehen und komme zu dem Schluss, dass da ein Bug vorliegt. Und zwar scheitert die Prüfung VarTypeIsValidArrayType(varInt64) wegen VarTypeToElementInfo.ValidBase = false. Laut MS PSDK müsste das eigentlich true sein. Vielleicht kann das ja jemand verifizieren?

marabu
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#5

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 22:02
N bissl Hintergrund:
Ich rufe eine Funkion von AutoCAD auf, die als einen Paramter ein Vararray "long" braucht.
VarArrayCreate([x,y],VarInteger) gibt ne Fehlermeldung aus - es _müssen_ longs sein.

Wenn das wirklich n Bug sein sollte - is der nur in D7 oder auch in 2000?

Besorgte Grüße

Thomasch
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 22:18
Bist du dir sicher, dass es nicht in dieser Form sein soll:
Delphi-Quellcode:
// Die Funktion die du aufrufst
procedure Funktion(var array of Cardinal);
.
.

// Dein Aufruf
var
  ar: array of Cardinal; // Unter Umständen feste Länge
begin
  Funktion(ar); // Gibt die Funktion die resultierende Länge zurück? Dann brauchst du vermutlich 2 Aufrufe:
                // einen um die Länge zu ermitteln, dann Arraylänge setzen, und dann der eigentliche Aufruf
.
.


Weil auch DAS könnte man als var-Array interpretieren. Der Variant-Typ ist im Übrigen ein Delphi interner Typ, der AutoCAD (welches ja sicherlich in C geschrieben ist) nicht bekannt sein dürfte. (Ich weiss allerdings nicht, ob es etwas dieser Art als OLEVariant-Möglichkeit gäbe - das wäre u.U. was.)
Rufst du eine Funktion einer Wrapper-Unit (also Pascal-Quellcode), oder direkt in einer DLL auf? Bei letzterer Variante wäre ich nicht sicher, ob ein VarArray basierend auf Variant das richtige ist.

Alles in allem haben wir ein bischen zu wenige Infos um gezielter raten zu können .

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#7

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 22:31
Dann ist mit long auf jeden Fall ein unsigned 32 bit-Wert, also Cardinal gemeint.
Auf der C-Schiene dürfte ein Array, wie dizzy schon sagt, anders aufgebaut sein.
Kannst du uns mal die genaue Deklaration der Funktion geben? Also in C und in Delphi. Das wäre sehr hilfreich.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 22:42
Zitat von thomasch:
Wenn das wirklich n Bug sein sollte - is der nur in D7 oder auch in 2000?
2000?

In D7 ist es aus meiner Sicht ein bug. Du kannst ihn aber leicht umgehen, indem du die Prüfung ausschaltest. Ich habe dazu einfach die benötigten Funktionen aus VarUtils in mein Testprogramm kopiert und die Änderung dort gemacht. Danach hatte ich ein einwandfreies varArray of varInt64.

marabu
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#9

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 23:01
Zitat von dizzy:
Bist du dir sicher, dass es nicht in dieser Form sein soll:

Alles in allem haben wir ein bischen zu wenige Infos um gezielter raten zu können .

Gruss,
Fabian
Puuuh - ehrlich gesagt bin ich mehr der AutoCAD als Delphi Freak.

Auf AutoCAD greife ich, da es sonst ziemlich nervig werden kann mit später Bindung zu.

In etwa sieh das dann so aus:
Delphi-Quellcode:
var
acadapp: variant;

begin
acadapp:=comobj.GetActiveOleObject('AutoCAD.Application.16');
[...]
Von acadapp leitet sich dann so ziemlich alles andere ab.

Nun gibt es dort eine Funktion namnens GetLink(), die unter anderem mit dem Parameter "ObjectIDs" aufgeufen werden kann, der laut AutotCAD OH so aus sieht:

Variant (array of Longs); input-only; optional

Das der opitional is tut nix zu sache, da ich ebend diese option nutzen muss...

THomasch
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#10

Re: variantes Array aus Longs?

  Alt 29. Jun 2005, 23:13
Zitat von marabu:
Zitat von thomasch:
Wenn das wirklich n Bug sein sollte - is der nur in D7 oder auch in 2000?
2000?

In D7 ist es aus meiner Sicht ein bug. Du kannst ihn aber leicht umgehen, indem du die Prüfung ausschaltest. Ich habe dazu einfach die benötigten Funktionen aus VarUtils in mein Testprogramm kopiert und die Änderung dort gemacht. Danach hatte ich ein einwandfreies varArray of varInt64.

marabu
Sorry - meinte natürlich 2005
Ansonsten - kann man irgendwo nachlesen, wo und was man da machen kann/muss?

Zu meiner Verteidigung kann ich nur sagen, dass ich bis April nich wusste was Delphi ist

Viele Grüße

Thomasch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf