Seite 1 von 1

DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 10:28
von Manfred
Ich stosse gerade auf ein merkwürdiges Problem. Kann es sein, das man kein leeres Array browsen kann?

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 10:37
von Manfred
sorry, muß es korrigieren. Ein leeres Array ist es nicht, ich habe es in dem Fall statt mit Werten, mit {"","",""} gefüllt. Also eigentlich eine leere Zeile. Das war mein erster Versuch das Problem anzugehen.

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 10:53
von Tom
Das Problem liegt an der Funktion "DC_GetColArray()". Die antwortet bei leeren Arrays immer mit Strings, wodurch es zu Datentypenfehlern kommt. Ich hatte schon vor einer Weile angeregt, dass man ihr Defaults (andere Datentypen) übergeben können sollte, aber bis Roger das macht, muss man selbst agieren:

Code: Alles auswählen

DCBROWSECOL DATA {||IF(Len(aArray)=0,'-',DC_GetColArray(1,oBrowse))} ...

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 11:44
von Manfred
Hi Tom,
mag sein dass ich mich etwas blöde anstelle, aber es klappt nicht.
Das DATA mußte gegen DATALINK getauscht werden, weil es sonst mit dem Codeblock einen Fehler gab beim cmpilieren, aber so

Code: Alles auswählen

@ 15,5 DCBROWSE oDialogZusatz:oBrowseVerein;
                    COLOR {|| CursorFarbe("array",oDialogZusatz,Dc_getColArray(0,oDialogZusatz:oBrowseVerein))};
               CURSORMODE XBPBRW_CURSOR_ROW;
                     DATALINK {||IF(Len(oDialogZusatz:aVerein)=0,"-",DC_GetColArray(1,oDialogZusatz:oBrowseVerein))};
                NOHSCROLL;
              NOSOFTTRACK;
                   PARENT oDialogZusatz:oRahmenBrowseVerein;
                     SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT - oDialogZusatz:nPbHoehe

          DCBROWSECOL ELEMENT VEREIN_BEZ;
                       HEADER "Bezeichnung" HCOLOR GRA_CLR_BLACK,GRA_CLR_GREEN;
                       PARENT oDialogZusatz:oBrowseVerein;
                        WIDTH 200
          DCBROWSECOL ELEMENT VEREIN_ART;
                       HEADER "Art" HCOLOR GRA_CLR_BLACK,GRA_CLR_GREEN;
                       PARENT oDialogZusatz:oBrowseVerein;
                        WIDTH 30
gibt es die Fehlermeldung
DC-ReadGui() error! Browse has no data source
was mache ich falsch?

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 11:55
von Wolfgang Ciriack
Gib mal als leeres Array {{"","",""}} an.

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 11:57
von Manfred
Hi Wolfgang,
da bin ich gerade bei. Das war sicherlich ein blöder Fehler, aber es klappt immer noch nicht richtig. Den Grund dafür suche ich aber noch.

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 12:00
von Wolfgang Ciriack
Ich sorge eigentlich schon beim Erstellen des Arrays dafür, dass es nicht leer ist, indem ich notfalls ein entsprechendes Leerelement einfüge.

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 12:34
von Tom
Ich habe die DATA-Klausel von DCBROWSECOL gemeint, nicht die von DCBROWSE. Letztere gibt das zu browsende Array an, erstere ist der Codeblock für die Spaltendaten.

Re: DCBROWSE und leeres Array

Verfasst: Di, 29. Nov 2016 12:57
von Manfred
@Wolfgang,
da ich im Moment den vielen Ratschlägen folge mehr mit Arrays zu machen, stoße ich hier und da auf ein paar Dinge, die ich so bisher nicht wußte. Deshalb mußte ich das auch lernen.
@Tom,
Danke, das habe ich so nicht erkannt (Wald, Bäume usw.). Werde es mal versuchen.

Re: DCBROWSE und leeres Array

Verfasst: Fr, 02. Feb 2018 19:59
von Manfred
sieht so aus, als wenn das Problem von Roger beseitigt wurde in der Version 265. :blob8:
Allerdings bin ich darauf gestossen, weil Toms Vorschlag nicht akzeptiert und mit einer Syntax Error Meldung beim Kompilieren quittiert wird. Aber erst, seit dem ich auf die aktuelle Version mit Xbase++ 2.0 umgestellt hatte.