Seite 1 von 1

<-1>==<-1> [erledigt]

Verfasst: Di, 10. Aug 2010 18:24
von AUGE_OHR
hi,

ich habe ein Errorlog was ich nicht "verstehe" ...
Xbase++ version : Xbase++ (R) Version 1.90.355
Operating system : Windows XP 05.01 Build 02600 Service Pack 3
Memory (RAM_AVAIL) : 1503.23 of 2096.13 MB
DiskSpace D: : 39085.63 MB
Alias() : leer
Recno() : leer
Found() : NO
NetError() : NO
Select() : 1
IndexOrd() : 0
WorkSpaceList :
-----------------------------------------------------------------

-----------------------------------------------------------------
oError:args :
-> VALTYPE: N VALUE: -1
-> VALTYPE: N VALUE: -1
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter hat falschen Typ
oError:filename :
oError:genCode : 2
oError:operation : <-1>==<-1>
oError:osCode : 0
oError:severity : 2
oError:subCode : 3
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
-----------------------------------------------------------------
CALLSTACK:
-----------------------------------------------------------------
Called from YUKONBURN:SHOWCDINFO(1255)
Called from YUKONBURN:DRIVEEJECT(1134)
Called from (B)YUKONBURN:CREATE(554)
Called from XBPPUSHBUTTON:HANDLEEVENT(968)
Called from MAIN(205)
der Code dazu ist :

Code: Alles auswählen

LOCAL aMedia := { ;
{ -1 ,"Error: no device selected"},;
{  0 ,"No CD present"      },;
{  1 ,"MEDIA_CDDA_CDROM"   },;
{  2 ,"MEDIA_CD_ROM_XA"    },;
{  3 ,"MEDIA_CD_I"         },;
{  4 ,"MEDIA_CD_EXTRA"     },;
{  5 ,"MEDIA_CD_OTHER"     },;
{  6 ,"MEDIA_SPECIAL"      }}

      aType  := ::oCDBurner:queryMediaType() // 2-Dim Array

      iMax   := LEN(aType)
      i := 1
      FOR i := 1 TO iMax
         nMediaType := aType[1]
         nMediaFlag := aType[2]
         DO CASE
              CASE nMediaType == aMedia[1,1] -> Crash
... hm ... :banghead:

Re: <-1>==<-1>

Verfasst: Di, 10. Aug 2010 18:49
von Tom
Liefert ::oCDBurner:queryMediaType() tatsächlich ein zweidimensionales Array zurück? Es scheint mir doch eher ein eindimensionales mit zwei Zeilen zu sein. :wink:

Whatsoever: Was ist der Rückgabetyp? Möglicherweise vergleichst Du numerische Werte mit Strings, was man aber im Errorlog nicht mehr sieht.

Re: <-1>==<-1>

Verfasst: Di, 10. Aug 2010 18:54
von Rolf Ramacher
Bei einem zweidem. Array muß es so aussehen aMedia[1][1]

Re: <-1>==<-1>

Verfasst: Di, 10. Aug 2010 19:41
von AUGE_OHR
Rolf Ramacher hat geschrieben:Bei einem zweidem. Array muß es so aussehen aMedia[1][1]
hm ... ist das nicht das selbe ?

Code: Alles auswählen

aMedia[1][1] == aMedia[1,1]
Tom hat geschrieben:Liefert ::oCDBurner:queryMediaType() tatsächlich ein zweidimensionales Array zurück ?
hm ...
oCDBurner:queryMediaType()
Returns the media type of the selected disc recorder.
Syntax
:queryMediaType() --> { <nMediaType>, ;
<nMediaFlag> }

Description
The method returns an array with two elements indicating media type information of the selected disc recorder:
Media type array Value Description
<nMediaType> -1 Error: no device selected
0 No CD present
1 MEDIA_CDDA_CDROM
2 MEDIA_CD_ROM_XA
3 MEDIA_CD_I
4 MEDIA_CD_EXTRA
5 MEDIA_CD_OTHER
6 MEDIA_SPECIAL
<nMediaFlag> -1 Error: no device selected
0 No CD present
1 MEDIA_BLANK
2 MEDIA_RW
4 MEDIA_WRITABLE
--------------------------------------------------------------------------------
Copyright © 2007-2008 Hannes Ziegler. All rights reserved.
http://www.knowleXbase.com
es sieht mir doch nach

Code: Alles auswählen

{ <nMediaType>, <nMediaFlag>  }
einem Array mit 2 Elementen, und nicht 2-Dim [-X , aus ... #-o

... aber irritiert bin ich schon durch
<-1>==<-1>

Re: <-1>==<-1> [erledigt]

Verfasst: Mi, 11. Aug 2010 9:06
von brandelh
Hi,

die Irritation ist ja auch berechtigt, wo doch die Parameter beide als N bezeichnet werden ...
dennoch würde ich hier eine Zeile ? var2char(...) vorschalten, dann kannst du nach dem crash sehen,
was genau in den Vars stand. Knallt es eigentlich immer oder nur unter bestimmten Situationen ?

und ...

aArray[1,1] entspricht genau (anderen Schreibweise) aArray[1][1] ...

Re: <-1>==<-1> [erledigt]

Verfasst: Mi, 11. Aug 2010 9:30
von brandelh
Bei dem XUG Usertreffen in Osnabrück hat uns Martin noch weitere "Gemeinheiten" mit dem Arrayoperator gezeigt ...

Angenommen ...

Code: Alles auswählen

// sowas geht mit Xbase++
aArray := { {"Dies","ist","ein","Test"},;
            {"Aus der 2. Spalte",nWert}}
? aArray         -> {{"Dies","ist","ein","Test"},{"Aus der 2. Spalte",nWert}}  // oder doch var2char(aArray) ?
? aArray[1]     ->   {"Dies","ist","ein","Test"}
? aArray[1,2]  -> "ist"
? aArray[1,2,3]  -> "t"                  // hier wird automatisch auf den 3. Buchstaben von "ist" zugegriffen ...
? aArray[1,2,3,1]  -> "t"               // hier dann auf den 1. von "t" ... wehe wenn aber kein Buchstabe mehr da ist, dann knallts.
Bei Zahlen geht es so auf die Bits ... steht auch so in der Hilfe zum Array-Operator - aber man überliest es so leicht ;-) (Beispiel 2 und 3)