Seite 1 von 1

ActiveX und Array

Verfasst: Do, 11. Mai 2006 14:38
von Michael
Hallo,
Habe ein Problem mit dem ActiveX. Wenn ich ein Vector/Liste abrufen will mit Name[Index] kommt es zu einem Fehler:
Beispiel (OCR mit Windows Image)

Code: Alles auswählen

  //Objekt erstellen
  _MODIDocument := ActiveXObject():create( "MODI.Document" )
  _ModiDocument:Invoke("Create",0,1,"c:\test.bmp")
  //OCR starten
  _ModiDocument:callMethod("OCR", 2048, .T.,.T. )

  // iterating though the document's structure doing some statistic.
  statistic = ""
  // Für jedes Bild werte auslesen
  FOR I := 1 TO  _MODIDocument:Images.Count)
     Image = _MODIDocument:Images[i]  // <--Error
  NEXT
Jemand eine Idee wie man auf die einzelnen Werte von einer Liste kommt?
_MODIDocument:Images:Count -> 1
_MODIDocument:Images[1] -> Error
_MODIDocument:Images[0] -> Error

Error = Parameter hat falschen Typ

Grüsse und Danke
Michael Gfeller

Re: ActiveX und Array

Verfasst: Do, 11. Mai 2006 15:04
von brandelh
Michael hat geschrieben:

Code: Alles auswählen

  FOR I := 1 TO  _MODIDocument:Images.Count)
     Image = _MODIDocument:Images[i]  // <--Error
  NEXT
Ich habe zwar - noch - keine Ahnung von ActiveX; aber

Images.Count) -> die letzte Klammer ist bestimmt ein Tippfehler ...
Images.Count -> ist ein Object-Zugriff bei VB. Images ist also ein Object.
Michael hat geschrieben:

Code: Alles auswählen

_MODIDocument:Images:Count     -> 1
_MODIDocument:Images[1] -> Error
_MODIDocument:Images[0] -> Error
_MODIDocument:Images:Count greift auf das Object Images zu !
_MODIDocument:Images[1] -> Error

Images ist KEIN Xbase++ Array. Soweit ich mich erinnern kann, war
bei VB oft ein Images als Anzahl der Image(...) definiert.
_MODIDocument:Image[1] -> geht das ?

Verfasst: Do, 11. Mai 2006 15:05
von Rolf
Hallo Michael

welchen Typ hat den _MODIDocument:Images[1] :?:
siehe xppError.log oder über Valtype( _MODIDocument:Images[1] )

Es könnte ja auch ein Array zurückgegeben werden

Grüße Rolf

Verfasst: Do, 11. Mai 2006 15:08
von Tom
Das sehe ich auch so. Images ist kein Array, sondern ein Objekt. Hat es möglicherweise noch eine :Items-Instanz oder ähnliches?

Verfasst: Do, 11. Mai 2006 15:30
von Michael
Ich komme etwas aus dem cSharp Umgebung :)
_MODIDocument:Images[1] meinte ich sei eine Liste bzw Vector.

gleiches Beispiel aus C#. Dachte das geht (etwa) gleich in Xbase++

Code: Alles auswählen

for (int i = 0 ; i < _MODIDocument.Images.Count; i++)
{
	MODI.Image image = (MODI.Image)_MODIDocument.Images[i]; <---Hier der Zugriff auf die Liste
	MODI.Layout layout = image.Layout;
	<-Schnitt-->
}

Verfasst: Do, 11. Mai 2006 15:41
von Michael
Tom hat geschrieben:Das sehe ich auch so. Images ist kein Array, sondern ein Objekt. Hat es möglicherweise noch eine :Items-Instanz oder ähnliches?
Hm, habs mal versucht.
ModiDocument:Images:Item(i-1) // Fängt bei 0 an und nicht bei 1
Ist aber nicht dokumentiert.

Danke! :)

Re: ActiveX und Array

Verfasst: Do, 11. Mai 2006 15:41
von AUGE_OHR
hi,
Michael hat geschrieben:Hallo,
Habe ein Problem mit dem ActiveX. Wenn ich ein Vector/Liste abrufen will mit Name[Index] kommt es zu einem Fehler:
Beispiel (OCR mit Windows Image)
das du ein Object zurück bekommst wurde ja schon erwähnt.

Es ist aber auch evtl. Möglich das v1.9.33x noch keine Arrays
zurück geben kann. Zumindest kann man kein Array mit Daten
übergeben.

siehe Alaska-Software Newsgroup public.xbase++.activex vom
8. März 2006 "Calling ActiveX method that requires array as argument"
und die Antwort von Andreas Herdt.

gruss by OHR
Jimmy