| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
| Erstellung von Mehrfach-Konstruktionsdaten , ein Anwenderbericht
|
Autor
|
Thema: String trennen (1475 mal gelesen)
|
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 03. Nov. 2004 14:55 <-- editieren / zitieren --> Unities abgeben:
Hola zusammen. Ich lese eine CSV Datei in ein ME10 Makro ein und suche nun verzweifelt einen Befehl mit dem ich den String an dem ; teilen kann an um zwei Variablen zu füllen. SUBSTR bringt mir nichts denn die Felder sind nicht immer gleichlang aber immer durch einen ; getrennt.
------------------ Viele Grüsse aus dem Schwabenländle Massimo Castell ------------------ DIE inoffizielle Hilfeseite zum OneSpace Designer http://osd.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2158 Registriert: 12.12.2000
|
erstellt am: 03. Nov. 2004 15:08 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
|
baumgartner Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 715 Registriert: 05.01.2001 Ing.-Büro Andreas Baumgartner bietet Lösungen rund um ME10. * ME10-Makros * ME10-Makroschulungen
|
erstellt am: 03. Nov. 2004 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
hallo, ";" ist doch ein hervorragendes Trennungszeichen. LET ZEILE ("1234;abcde;56") LET N (POS ZEILE ";") (* =5 *) LET TEIL (SUBSTR ZEILE 1 (N-1)) (* = "1234" *) LET ZEILE (SUBSTR ZEILE (N+1) 10000) (* ="abcde;56" *) Das Ganze jetzt natürlich in einer LOOP-Schleife und fertig. War jetzt freihändig ohne Test. EDIT: Walter war wieder mal schneller! ------------------ Grüsse aus dem Schwarzwald www.Andreas-Baumgartner.de [Diese Nachricht wurde von baumgartner am 03. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 03. Nov. 2004 15:13 <-- editieren / zitieren --> Unities abgeben:
WOW !! Ich bin erstaunt. Das das ; ein tolles Trennzeichen ist, dass weiß ich, sonst hätte ich es nicht für dei CSV benützt. Nur wußte ich nicht wie weitermachen. Vielen Dank an beide.
------------------ Viele Grüsse aus dem Schwabenländle Massimo Castell ------------------ DIE inoffizielle Hilfeseite zum OneSpace Designer http://osd.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Walter Geppert Moderator Frank und Frei
Beiträge: 2158 Registriert: 12.12.2000
|
erstellt am: 03. Nov. 2004 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
|
Dittrich Mitglied SysAdmin
Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 05. Nov. 2004 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
Hallo, ich hatte da irgendwo mal eine Funktion gefunden, die das macht was du willst und per Parameterübergabe sehr variabel einsetzbar ist. Funktion <kompletter string> <trennzeichen> <Position des Teilstrings> Spalte_str 'Willi;Butz' ';' 0 Die Rückmeldung enthält den Teilstring zwischen den Trennzeichen 0 ist Willi, 1 ergibt Butz Anwendungsbeispiel bei zeilenweisen einlesen einer CSV-Datei und befüllen einer logischen Tabelle. READ_FILE 1 Zeile EXIT_IF (Zeile='END-OF-FILE') WRITE_LTAB 'x_ltab' i 1 (STR(Spalte_str Zeile ';' 0)) WRITE_LTAB 'x_ltab' i 2 (STR(Spalte_str Zeile ';' 1)) WRITE_LTAB 'x_ltab' i 3 (STR(Spalte_str Zeile ';' 2)) Und hier das Makro DEFINE Spalte_str PARAMETER String1 PARAMETER Trenn_str PARAMETER Spalte IF (SPALTE > 0) (Spalte_str (STR_AB (String1+Trenn_str) ( (POS String1 Trenn_str)+1)) (Trenn_str) (Spalte-1)) ELSE IF ( (POS String1 Trenn_str) >0 ) (SUBSTR String1 1 ((POS String1 Trenn_str)-1) ) ELSE (String1) END_IF END_IF END_DEFINE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fan-ME10 Mitglied DV-Adminstrator, Konstrukteur
Beiträge: 543 Registriert: 21.08.2001 Erare humanum est
|
erstellt am: 05. Nov. 2004 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
|
Dittrich Mitglied SysAdmin
Beiträge: 388 Registriert: 06.06.2000 Wenn es nicht geht, probier was anderes, vielleicht geht es dann auch nicht.
|
erstellt am: 05. Nov. 2004 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
Sorry, str_ab ist eine weitere Funktion. Das ist halt der Nachteil von Modularisierung. DEFINE Str_ab PARAMETER String PARAMETER Beginn IF (Beginn <= LEN (STR String)) (SUBSTR (STR String) Beginn (LEN (STR String) - Beginn + 1 )) ELSE ('') END_IF END_DEFINE Wenn man die beiden Bausteine an den Anfang der Datei packt, in der das Makro enthalten ist, das diese Funktionen verwenden soll, funktioniert es nach dem Input.
[Diese Nachricht wurde von Dittrich am 05. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fan-ME10 Mitglied DV-Adminstrator, Konstrukteur
Beiträge: 543 Registriert: 21.08.2001 Erare humanum est
|
erstellt am: 05. Nov. 2004 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für Castell
|
Castell Mitglied Technical Advisor Engineering
Beiträge: 302 Registriert: 22.05.2000 Das Wissen der Menschen gehört der Menschheit.<P>SAP PLM, Notepad++, Windows 7
|
erstellt am: 09. Nov. 2004 14:57 <-- editieren / zitieren --> Unities abgeben:
Hola. Wie es der Teufel will. Wenn man etwas fertig hat, dann kommen schon die Erweiterungen. Und schon wird die CSV-Datei 4 spaltig. Danke Dittrich für deine Lösung. Und Danke nochmals allen hier. ------------------ Viele Grüsse aus dem Schwabenländle Massimo Castell ------------------ DIE inoffizielle Hilfeseite zum OneSpace Designer http://osd.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |