WinCC WinCC V7.3 Zugriff auf UserArchive Control mit C-Skript

hmeier

Level-1
Beiträge
10
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich möchte mit C-Skript auf ein UserArchive Control zugreifen und z.B. einen Wert aus der ausgewählten Zeile lesen. Dazu verwende ich folgenden Code:
Code:
#define GetObject GetObject 

__object *oPDL = NULL; 
__object *oPIC = NULL; 
__object *oOBJ = NULL; 
__object *oROW = NULL;

oPDL = __object_create("PDLRuntime"); 
if (oPDL != NULL)
{
    oPIC = oPDL->GetPicture(lpszPictureName); 
    if (oPIC != NULL)
    {
        oOBJ = oPIC->GetObject("Control_UA_Rolls"); 
        if (oOBJ != NULL)
        {
            oROW = oOBJ->GetSelectedRow();

            if (oROW != NULL)
            {
                printf("Anzahl der Zellen: %d\n", oROW->CellCount); //Anzahl der Zellen lesen: funktioniert
                printf("Zeilennummer: %d\n", oROW->RowNumber); //Zeilennummer der gewählten Spalte in der Tabelle lesen: funktioniert
                printf("Inhalt von Spalte 1: %s\n", oROW->CellText(1)); //FEHLER (General protection fault)

                __object_delete(oROW);
            }
            __object_delete(oOBJ)1;
        }
    __object_delete(oPIC); 
    }
__object_delete(oPDL);    
}

Laut WinCC Doku funktioniert CellText wie folgt:
Gibt den Inhalt einer Zelle als String zurück. Die Zelle wird ermittelt aus der Spaltennummer des Row-Objekts. Die Nummerierung läuft von "1" bis "CellCount".

Leider sind alle Beispiele, die ich finden konnte in VBS, ich brauche das ganze aber in C.

Weiß jemand, wo das Problem liegen könnte?

Gruß,
hmeier
 
Wo ist denn das Problem, funktioniert das Programm, oder funktioniert es nicht?
Wahrscheinlich nicht, aber was funktioniert nicht? Bekommst du eine Fehlermeldung, wenn ja, welche?

Woher stammt denn dein obiger Code?
Sowas wie:
#define GetObject GetObject
ist schon mehr als merkwürdig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

den Code habe ich aus http://control.com/thread/994172721 und dann angepasst, inwzischen funktioniert das ganze auch, allerdings weiß ich so recht warum :D

Ich habe die Zeile

Code:
printf("Inhalt von Spalte 1 : %s\n", oROW->CellText(1));

durch folgendes ersetzt (anscheinden gab es Probleme mit printf?)

Code:
StringBuffer = oROW->CellText(1);
printf("Inhalt von Spalte 1: %s\n", StringBuffer);

Allerdings muss jetzt natürlich das Control geöffnet sein, um auf die Daten zugreifen zu können. In den Control werden die Daten einer UserArchive Sicht dargestellt, die ich auslesen möchte.
Ich habe diesen Weg gewählt, weil laut diesem Beitrag WinCC User-Archive -> Sichten man nicht an die Daten rankommt. Falls jemand jedoch weiß, wie man die Daten einer UserArchive Sicht direkt mit C-Skript lesen kann, wäre das natürlich viel prraktischer.
 
Zurück
Oben