Array Dimension und Länge [erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Array Dimension und Länge [erledigt]

Beitrag von Ewald »

Ich möchte in der Funktion afunc feststellen, ob das Array xa mehrdimensional (ab) oder eindimensional (aa) ist.
Len() gibt es nicht her. Kann man das in diesem Beispiel innerhalb der Funktion afunc überhaupt feststellen - außer
mit einem Laufzeitfehler ;-)
Danke für jeden Tip
Ewald

Code: Alles auswählen

PROCEDURE Main 
   aa:={}
   ab:=array(0)
   aadd(aa,{"Hein","Mück","Hamburg"})
   aadd(aa,{"Karl","Mück","Frankfurt"})
 
   aadd(ab,"Hein Mück Hamburg")
   aadd(ab,"Hein Mück Frankfurt")
   
   ? afunc(aa)
   ? afunc(ab)
return

function afunc(xa)
vlen:=len(xa)
if xa=mehrdimensional // ?????
   ? xa[1,1]
      else
   shit happens
endif
return vlen 
Zuletzt geändert von Ewald am Di, 28. Jan 2014 19:43, insgesamt 1-mal geändert.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Array Dimension und Länge

Beitrag von georg »

Hallo, Ewald -


ein Array ist dann mehrdimensional, wenn wenigstens ein Element selbst ein Array ist:

Code: Alles auswählen

FUNCTION AFunc(aRray)
LOCAL nI, nLen, lMulti
lMulti := .F.
nLen := Len(aRray)
FOR nI := 1 TO nLen
   IF ValType(aRray[nI]) == "A"
      lMulti := .T.
      EXIT
   ENDIF
NEXT
RETURN(lMulti)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Array Dimension und Länge

Beitrag von Wolfgang Ciriack »

Es gibt aber auch diese Möglichkeit:

Code: Alles auswählen

  aadd(aa,{"Hein","Mück","Hamburg"})
  aadd(aa,"Hein Mück Hamburg")
Wenn du also sichergehen willst, musst du alle Elemente von aa auf den Typ prüfen.
Viele Grüße
Wolfgang
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Array Dimension und Länge [erledigt]

Beitrag von Ewald »

Danke, damit hat sich mein Problem in Luft aufgelöst. Da hätte ich wahrscheinlich noch (zu) lange rumgeknobelt.
Ich sage nur "Rente mit 63" 8)
Antworten