Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vergleich tritt nie ein (https://www.delphipraxis.net/155453-vergleich-tritt-nie-ein.html)

EWeiss 24. Okt 2010 13:14

Vergleich tritt nie ein
 
Etwas unverständlich für mich.
VB.
Code:
If ((varType(args(i)) And vbArray) = vbArray) Then
DELPHI
Delphi-Quellcode:
if ((VarType(args[i]) And varArray) = varArray) then
varArray = vbArray beides der gleiche vergleichswert.
varType in Delphi = 8
varType in VB = 8204

wie soll ich jetzt jemals den vergleich auf true schalten
gibt es eine alternative?

gruss

himitsu 24. Okt 2010 13:22

AW: Vergleich tritt nie ein
 
Zitat:

varType in Delphi = 8
varType in VB = 8204
Es gibt bei den Variants standardtypen, welche von Microsoft definiert wurden
und es gibt eigene Typen, welche es z.B. "nur" in Delphi oder VB gibt.

8204 ist jedenfalls keiner der Standardtypen, also wird es ein VB-spezifischer Typ sein, welchen es in Delphi nicht gibt.

Lösungen:
- in VB auf einen anderen Typ umsteigen, welchen Delphi auch kennt
- oder diesen Typen in Delphi selber implementieren

EWeiss 24. Okt 2010 13:28

AW: Vergleich tritt nie ein
 
Zitat:

Zitat von himitsu (Beitrag 1057541)
Zitat:

varType in Delphi = 8
varType in VB = 8204
Es gibt bei den Variants standardtypen, welche von Microsoft definiert wurden
und es gibt eigene Typen, welche es z.B. "nur" in Delphi oder VB gibt.

8204 ist jedenfalls keiner der Standardtypen, also wird es ein VB-spezifischer Typ sein, welchen es in Delphi nicht gibt.

Lösungen:
- in VB auf einen anderen Typ umsteigen, welchen Delphi auch kennt
- oder diesen Typen in Delphi selber implementieren

Danke dir ;)
Ich könnte den Typ gleichsetzen
Delphi-Quellcode:
if (((VarType(args[i])+ 8196) And varArray) = varArray) then
Die frage nur wie sinnvoll ist das ?

gruss

himitsu 24. Okt 2010 13:40

AW: Vergleich tritt nie ein
 
Ahhh, ich seh grad ... die oberen Bits hatten ja eine besondere Bedeutung,

varTypeMask = $0FFF;
varArray = $2000;
varByRef = $4000;

$0008 = varOleStr
$000C = varVariant
$2000 (8192) = varArray


Also $0008 entspricht einem OleString (PWideChar)
Und eine $2008 (8200) entspricht einem Array voller OleString.

Dein $200C (8204) entpricht einem Array voller weiterer Variant (deren Inhalt man wiederum in diesen nachsehn müßte).


Du kannst sowas nicht einfach gleichsetzen, da der Variant ja je nach VariantTyp einen anderen Inhalt/Aufbau besitzt.

Die $0008 (8) und $200C (8204) entsprechen komplett unterschiedlichen Datenformaten, so daß man da nichtmal ansatzweise etwas gleichbehandeln kann.

EWeiss 24. Okt 2010 13:52

AW: Vergleich tritt nie ein
 
@himitsu
Sorry das ist etwas zu hoch für mich;)
Was würde das für mich bedeuten bzw .. was muss ich ändern
um den vergleich auflösen zu können?

Oder geht es grundsätzlich nicht.

Ich müßte also meine String in einen OleString umwandeln?

gruss


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