Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Wrapper-Funktion für UF_ATTR_read_value

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Wrapper-Funktion für UF_ATTR_read_value (716 mal gelesen)
MarckyMON
Mitglied
Programmierer


Sehen Sie sich das Profil von MarckyMON an!   Senden Sie eine Private Message an MarckyMON  Schreiben Sie einen Gästebucheintrag für MarckyMON

Beiträge: 35
Registriert: 07.07.2008

erstellt am: 21. Apr. 2009 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo     ,

Ich bin ziemlich neu zu C und versuche eine Wrapper-Funktion für die UF-Funktion UF_ATTR_read_value zu erstellen. Meine Funktion sieht aus wie folgt:

Code:

extern int TDF_ATTR_read_string
(
tag_t attrTag, /* IN */
char *title, /* IN */
char **value /* OUT */
)
{
UF_ATTR_value_t attr;
int len;
int ec;

ec = UF_ATTR_read_value(attrTag, title, UF_ATTR_string, &attr);
if (attr.type == UF_ATTR_string)
{
len = (int)strlen(attr.value.string);
(*value) = (char *)malloc((len + 1) * sizeof(char));
sprintf(*value, attr.value.string);
}

return(ec);
}


Ich rufe die Funktion aus wie z.B.:

Code:

char     *value = NULL;
tag_t    partTag = NULL_TAG;


partTag = UF_ASSEM_ask_work_part();

//Überprüfen, ob partTag == NULL_TAG ist...

TDF_ATTR_read_string(partTag, "AAA_REVISION", &value);

//Weitermachen...



Allerdings habe ich das Problem, daß NX4 abstürzt, oder halt value == NULL ist, obwohl das Part-Attribute AAA_REVISION existiert.  

Verpass ich etwas?? Früher hat es funktioniert, weiss nicht aber wieso. Ich bitte dringend um Eure Hilfe, danke!!!


EDIT: Ich habs - ich muss die Stuktur attr zuerst initalizieren, damit UF_ATTR_read_value überhaupt läfut (sonst wird ein Error-Code mit Wert 11 zurückgeliefert). Was mich natürlich ärgert, ist es nirgendwo in der Open C API-Doku geschrieben ist, daß ich die Struktur intializieren muss... 
Hier die neue Funktion:

Code:

extern int TDF_ATTR_read_string
(
tag_t attrTag, /* IN */
char *title, /* IN */
char **value /* OUT */
)
{
UF_ATTR_value_t attr;
int ec, len;

attr.value.string = NULL;
ec = UF_ATTR_read_value(attrTag, title, UF_ATTR_string, &attr);
if (ec == 0)
{
if (attr.type == UF_ATTR_string)
{
//sprintf(value, attr.value.string);
len = (int)strlen(attr.value.string);
(*value) = (char *)malloc((len + 1) * sizeof(char));
sprintf(*value, attr.value.string);
}
//else
//sprintf(value, "\0");
}
//else
//sprintf(value, "\0");

return(ec);
}


------------------
Gruß,
char *name = "Marc";

[Diese Nachricht wurde von MarckyMON am 21. Apr. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Maschinenbauingenieur / Konstruktionsingenieur (w/m/d) Gas- und Energiewirtschaft

Die PSE Engineering GmbH bietet im Bereich Planung alle Ingenieurdienstleistungen rund um die betriebstechnischen Einrichtungen in der Energie- und Gaswirtschaft an.

Für die unterschiedlichsten Anforderungen unserer Kunden werden die erforderlichen technischen Konzepte und Lösungen individuell erarbeitet und die komplette Planung von der ersten konzeptionellen Vorstudie bis hin zur Bauüberwachung und Inbetriebnahme der kompletten Betriebsanlagen durchgeführt....

Anzeige ansehenMaschinenbau
Overcast
Mitglied



Sehen Sie sich das Profil von Overcast an!   Senden Sie eine Private Message an Overcast  Schreiben Sie einen Gästebucheintrag für Overcast

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 20. Mai. 2009 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MarckyMON 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von MarckyMON:
Was mich natürlich ärgert, ist es nirgendwo in der Open C API-Doku geschrieben ist, daß ich die Struktur intializieren muss...  

Doch, genau das ist explizit beschrieben:

Zitat:

UF_ATTR_value_p_t value Input / Output to be freed

Typed Attribute Value:
If "type" is UF_ATTR_string then
"value->value.string" must either be NULL or
point to a character buffer of size
UF_ATTR_MAX_STRING_LEN + 1.

If the value is NULL, then the returned buffer will be allocated,
and the user is responsible for freeing it
by calling UF_free().



Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz