| | | MegaCAD auf der Metallsoftware Süd |
Autor(20117)
|
Thema: VB-Programmierproblem (1076 mal gelesen)
|
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3679 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 07. Feb. 2005 12:25 <-- editieren / zitieren --> Unities abgeben:
Hallo alle, ich versuche gerade, mir eine VB-DLL zu basteln, die mir die Namen aller eingefügter Macros in eine Textdatei exportiert. Klappt soweit auch schon ganz gut, aber es ergeben sich zwei Probleme: 1. Ich möchte nur die Macros bearbeiten, die in der 'ersten Schicht' liegen. Ein Macroloop liefert mir aber auch immer die verschachtelten Macros, also praktisch die Unterbaugruppen. Ich finde nirgendwo in der VB-Hilfe eine Möglichkeit, solche verschachtelten Makros auf irgendeine Weise zu identifizieren, um sie von der Bearbeitung ausschließen zu können. Weiß vielleicht jemand Rat? 2. Solange ich mir (zum Testen) die Makronamen in einer MSGBOX anzeigen lasse, sieht alles OK aus. Schreibe ich den t_macro.name aber in eine string-Variable und danach in eine Textdatei, dann hängen bei den CADENAS-Teilen plötzlich zusätzliche Informationen an den eigentlichen Namen dran. Das wäre auch garnicht so schlimm, aber an den darauffolgenden strings der anderen Teile hängen dann plötzlich ganz unmotiviert Teile dieser Texte auch dran. Ist das ein BUG oder mache ich da irgendwas falsch? Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hillex Mitglied Meister/BWdH/Dipl.Ing.Ind.Engineering
Beiträge: 587 Registriert: 16.01.2002
|
erstellt am: 07. Feb. 2005 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für Torsten Niemeier
Moin, zu 1: Das müsste sich wahrscheinlich über eine EntityLoop mit den Elementtypen E_MACRO und E_ENDMAC zu bewerkstelligen sein. Da alle Elemente dazwischen zu einer Baugruppe gehören müssten. zu 2: daran ist wahrscheinlich ein Bug schuld. Die Variable in der VB-Zwischen-DLL wird wahrscheinlich nicht vollständig mit NULL initialisiert, außerdem wird zusätzlich die Macro-Info, welche nach einem NULL-Byte folgt mit in die Namensvariable geschrieben und damit steht immer noch die Makro-Info dahinter. Bei der MSGBOX tritt dieser Effekt nicht in Erscheinung, da dies ein API-Aufruf ist, welcher in C geschrieben ist und in C werden String mit einem NULL-Byte abgeschlossen. Deshalb hört die Ausgabe des String nach dem ersten NULL-Byte auch auf. Vorerst Abhilfe für das Problem könnte sein, das du deine Variable erst immer mit einer Leerenzeichenkette "" initialisierst und dann dieser einen Teilstring bis zum ersten NULL-Byte der t_macro.name Variable zuweist.
------------------ 90% aller Fehler haben ihre Ursache 60cm vor dem Bildschirm. CU Karsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3679 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 07. Feb. 2005 15:06 <-- editieren / zitieren --> Unities abgeben:
Auch Moin, ist ja super, hatte kaum mit Lösungsmöglichkeiten gerechnet, vor allem nicht in der Zeit. Werde die beiden Möglichkeiten ausprobieren, aber schon vorher gibt's für die beiden Tips jeweils 10. Besten Dank nochmal. Gruß, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hillex Mitglied Meister/BWdH/Dipl.Ing.Ind.Engineering
Beiträge: 587 Registriert: 16.01.2002
|
erstellt am: 07. Feb. 2005 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für Torsten Niemeier
Moin, nochmals zu 2. ich konnte die von Dir beschriebenen Probleme mit MegaCAD-Bauruppen und Infos nicht nachvollziehen. Leider habe ich keine Datei mit CADENAS Baugruppen. Kannst du mal ein Beispiel ins Formstellen oder mir zusenden. Danke ------------------ 90% aller Fehler haben ihre Ursache 60cm vor dem Bildschirm. CU Karsten
[Diese Nachricht wurde von Hillex am 07. Feb. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Torsten Niemeier Ehrenmitglied V.I.P. h.c. Maschinenbau Ingenieur
Beiträge: 3679 Registriert: 21.06.2001 "ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform ** CSWP 04/2011 ** ** CSWE 08/2011 **
|
erstellt am: 09. Feb. 2005 09:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Karsten, sorry für die späte Antwort, aber jetzt läuft es (endlich). War nicht ganz so einfach, denn der Entity-Loop berücksichtigt leider keine e_macros. Beim Macro-Loop werden zwar sowohl e_macros als auch e_endmacs gefunden, aber nicht so wie ich es erwartet hätte, denn die verschachtelten werden zweimal gefunden. Letztendlich mache ich jetzt mehrere Macro-Loops, wobei ich die Macros erst identifiziere und sammle und anschließend noch Macro-Loops über die einzelnen Macros (Startwert) mache, wobei ich dann die gefundenen Unterbaugruppen aus der ursprünglichen Liste lösche. So geht's jedenfalls, und auch verdammt schnell. Das Textproblem habe ich dann gelöst, indem ich bei den eigenen Macronamen alles hinter ".mac" und bei Cadenas alles hinter "IDNR" abschneide. Eine Beispieldatei mit Cadenas-Elementen schicke ich Dir heute oder morgen zu. Ich muß dazu aber sagen, daß der Textfehler bei mir unter EVOII auftrat, mit 2005 hab' ich's noch nicht probiert. Nochmal vielen Dank für die Anregungen, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hillex Mitglied Meister/BWdH/Dipl.Ing.Ind.Engineering
Beiträge: 587 Registriert: 16.01.2002
|
erstellt am: 09. Feb. 2005 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Torsten Niemeier
Moin, dass die Filter für die Schleifen nicht richtig funktionieren hatte ich auch schon bemerkt, dass ist auch noch bei der 2005er so. Bis jetzt hat es mich aber noch nicht gestört. Ken sollte dies aber mal überprüfen, dann könnte evtl. eine aktualisierte Version der DLL und der IF ins Forum oder auf die Megatech-Seite gestellt werden. Die MacroLoop wertet im Übrigen auch keine Elemente in filter1 aus, so wie dies in der Hilfe Beschrieben ist.
------------------ 90% aller Fehler haben ihre Ursache 60cm vor dem Bildschirm. CU Karsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KenSch Mitglied Software!
Beiträge: 27 Registriert: 13.03.2003 Suche auch nach Aufträgen in der Softwareentwicklung, auch gerne Zusatzapplikationen zu MegaCAD.
|
erstellt am: 10. Feb. 2005 00:59 <-- editieren / zitieren --> Unities abgeben: Nur für Torsten Niemeier
das Problem mit den verschachtelten Makros ist mir auch schon aufgefallen, liegt aber leider direkt an der C-Schnittstelle, die ja indirekt von der Basic-Schnittstelle benutzt wird. Eine zuverlässige Methode, die ich dann benutzt habe um gerade die E_MACRO und E_ENDMACROs wirklich so zu bekommen, daß es Sinn macht, ist immer beide Filter als 0xffffffff (-1) zu übergeben, d.h., alle Elemente an die Callbackfunktion übergeben zu lassen, und dort entscheiden, ob Du sie behandeln willst, oder nicht. Ich kann mich auch an ein Problem mit den Texten, wie beschrieben, erinnern, müßte aber schon seit einer Weile behoben sein. Ich habe auch gerade eine ganz neue VB-Schnittstelle hier abgelegt, endlich auch mit einer Entsprechung der Funktion CreateMacro, speziell für VB Ken ------------------ Ken Schirmeister KenSch@MountainCable.net Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|