Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  MegaCAD
  C-Schnittstelle - Macronamen ausgeben

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
  
Bergers Holzfensterbau (MegaCAD)
Autor(20117) Thema:  C-Schnittstelle - Macronamen ausgeben (1253 mal gelesen)
22Grad
Mitglied
Maschinenbautechniker

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

Beiträge: 2
Registriert: 01.11.2011

Win XP Prof. SP3
MegaCAD 3D 2011

erstellt am: 01. Nov. 2011 03:30    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


Message.jpg

 
Hallo zusammen,

seit 4 Jahren schaue ich regelmäßig im Forum vorbei (als stiller Leser) und habe auf meine Fragen immer eine Antwort gefunden.
Doch jetzt beschäftige ich mich experimentell mit der C-Schnittstelle und komme nicht weiter. Liegt wahrscheinlich an meinen mangelnden bzw. nicht vorhandenen C-Kenntnissen  , da ich eher php etc. programmiere.

Doch nun zu meinem Code (Visual C++ 2010 Express):

Code:

#include "stdafx.h"
#include "std.h"
#include "megatyp.h"
#include "megacad.h"

/***********************************************************************/
char edta[32000];// Puffer fr variable Daten
short lcnt;
/***********************************************************************/

short ModEl(void *para)
{
    t_entity *ent;
    ent = (t_entity*) para;

    if(ent->type == E_MACRO)
    {
lcnt++;

if(ent->data.mac.name)
{
                      //Ausgabe des Baugruppennamens
      Message("Benennung:",ent->data.mac.name,NULL,NULL,"OK",3);
}

    }

    return(CONTINUE_LOOP);
}
/***********************************************************************/
extern "C" short MegaMain(char *file, char *args)
{
    char        buf[255];
    t_entity    ent;
    t_edta  * edta = GetVarPtr();  //für C-Interpreter in T_EDTA oder void ändern
    //uint edtaMax = GetMaxDataSize();

    lcnt = 0;
    //Über alle Macros laufen und Callback
    MacroLoop((1<<E_MACRO),0L,0L,ModEl,&ent,edta,NULL,sizeof(edta));
    //Änderungen sichern
    if(lcnt>0)savecount();
    //Ausgabe der Macroanzahl
    sprintf_s(buf, 255, "%d Macros",lcnt);
    Message(buf,NULL,NULL,NULL,"OK",3);

    return(0);
}
/***********************************************************************/



Die Datei enthält 8 exklusive Macros, aber mir wird immer der gleiche "String" (anscheinend codiert) angezeigt. (siehe Abb.)

Wer findet den Fehler und kann mir weiter helfen?

Vielen Dank!


LG Hendrik

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

Knoop
Mitglied
Dipl.-Ing. masch.


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

Beiträge: 409
Registriert: 09.10.2000

erstellt am: 01. Nov. 2011 10:37    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 22Grad 10 Unities + Antwort hilfreich

Hallo,

pass doch mal die Zeile mit Macroloop wie folgt an:

MacroLoop((1<<E_MACRO),0L,0L,ModEl,&ent,GetVarPtr(),NULL,VD_CNT);

Ich denke dann sollte es funktionieren.
Du hast global den edta als char mit 32000 Zeichnen definiert.
Aber lokal:
t_edta  * edta = GetVarPtr();

Das passt nicht zusammen...


Viele Grüße

Bernd

------------------
-Megatech Software GmbH-
  -Niederlassung Nord-

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

22Grad
Mitglied
Maschinenbautechniker

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

Beiträge: 2
Registriert: 01.11.2011

Win XP Prof. SP3
MegaCAD 3D 2011

erstellt am: 01. Nov. 2011 18:37    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 Bernd,

vielen Dank! Funktioniert einwandfrei!


Viele Grüsse
Hendrik

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)2024 CAD.de | Impressum | Datenschutz