| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
|
Autor
|
Thema: Textfile zeilenweise einlesen und zeilen splitten! (3814 mal gelesen)
|
giovane Mitglied

 Beiträge: 86 Registriert: 31.08.2002
|
erstellt am: 30. Jul. 2003 10:34 <-- editieren / zitieren --> Unities abgeben:         
|
Tstone Mitglied Werkzeugkonstrukteur
 
 Beiträge: 163 Registriert: 04.06.2003 Dell Precision 470 Intel Xeon CPU 3,00GHz 2GB Ram Microsoft Windows XP Catia V5 R18 SP6 VB2005
|
erstellt am: 30. Jul. 2003 12:44 <-- editieren / zitieren --> Unities abgeben:          Nur für giovane
Hallo giovane Text laßt sich zeilenweise über das TextStream-Object einlesen (Func ReadLine( ) As CATBSTR ). Für das splitten gibt es in VB die Funktion "Splitt" Function Split(Expression As String, [Delimiter], [Limit As Long = -1], [Compare As VbCompareMethod = vbBinaryCompare])
Weiter Informationen findest Du in der CAA V5 Visual Basic Help Gruß Tstone Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Species8472 Mitglied

 Beiträge: 16 Registriert: 30.07.2003
|
erstellt am: 30. Jul. 2003 14:44 <-- editieren / zitieren --> Unities abgeben:          Nur für giovane
Hallo, ich hab ein ähnliches "Problem" eben, das ich eine Excel Tabelle in txt umgewandelt habe, und die einzelnen Spalten durch Tabs getrennt sind. meine Frage wär dann eben, wie kann ich den Text Splitten. Also nehmen wir mal an, meine Textzeile, in der die mit Tab getrennten Zeichen stehen, wäre schlicht und ergreifend "Textline". Ich versteh den Befehl unten nicht ganz...ich würd ihn vermutlich so interpretieren: Function Split(Textline, "Trennungszeichen", [Limit für die Länge des "Feldes"], [Und den Ausdruck versteh ich garnicht: Compare As VbCompareMethod = vbBinaryCompare]) Die Frage wäre dann auch, in der Tabelle stehen dann Sachen wie z.B. "Teil Nr."<Tab>"Name des Teils"<Tab>"Interne Bearbeitungsnummer"<Tab>"Ersteller" Wie könnte ich jetzt diese 4 Spalten in Verschiedenen Variablen speichern...also ich würd eben dann 4 Array's anlegen, eben z.B. TeilNR(1)...TeilNR(10)...usw... aber weiss eben nicht, wie ich den Inhalt der Textdatei so getrennt in diese Betreffenden Variablen Speichern kann bzw. auch nicht, wie ich das Trennungszeichen "Tab" eben in diesen Befehl mit einbette... Schonmal Danke MfG Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
giovane Mitglied

 Beiträge: 86 Registriert: 31.08.2002
|
erstellt am: 30. Jul. 2003 18:27 <-- editieren / zitieren --> Unities abgeben:         
hey, ich schon soweit klar, jedoch habe ich immer eine Typen-Unverträglichkeit wenn ich den ReadLine versuche zu splitten! in etwa so müsste die scriptstelle (komme gerade nicht dran) sein Dim sbuffer As String Dim array() As String For NOTEOF... sBuffer = meinTextStream.ReadLine... array = Split(sbuffer, " ") <= hier soll eine Typenunverträgl. sein Next Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
giovane Mitglied

 Beiträge: 86 Registriert: 31.08.2002
|
erstellt am: 30. Jul. 2003 21:46 <-- editieren / zitieren --> Unities abgeben:         
so nun habe ich meinen code rekonstruiert: ############## Language="VBSCRIPT" Sub CATMain() Dim filesystem1 As Object Set filesystem1= CATIA.FileSystem Dim file As Object set file=filesystem1.GetFile("H:\Eigene Daten\Macros\input.txt") Dim TextStr As CATIATextSteam Set TextStr = file.OpenAsTextStream("ForReading") Dim readString As String While TextStr Not EOF readString = TextStr.ReadLine() Dim sArray() As String sArray = split(readString, "|") MsgBox sArray(1),vbinformation,"Info" End While end sub ############################# - es soll die zeile "sArray = split(readString, "|") " von den typen nicht zusammen passen? aber warum? - die while schleife funzt auch noch nicht, aber warum? wer kann mir sagen wie ich das script korrigieren muß? danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stoffel Mitglied Student
 
 Beiträge: 322 Registriert: 09.10.2002 R6/V2010
|
erstellt am: 31. Jul. 2003 10:25 <-- editieren / zitieren --> Unities abgeben:          Nur für giovane
Wenn ich das recht verstehe, versuchst du, einen String auf ein komplettes Array zuzuweisen?! Zum While-Problem: Ein TextStream kann niemals EOF sein. Höchstens sein Inhalt. [Diese Nachricht wurde von Stoffel am 31. Juli 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Species8472 Mitglied

 Beiträge: 16 Registriert: 30.07.2003
|
erstellt am: 01. Aug. 2003 11:58 <-- editieren / zitieren --> Unities abgeben:          Nur für giovane
Ich hab einen teil von giovane's Macro angesehen, der mit dem meinigen übereinstimmt. Das wäre dieser teil: ################ Dim filesystem1 As Object Set filesystem1= CATIA.FileSystem Dim file As Object set file=filesystem1.GetFile("H:\Eigene Daten\Macros\input.txt") ############### Unterschied ist bei mir sind die Variablen anders bei mir sieht das so aus: ############### Dim filesystem As FileSystem Dim CurrentFile As File Set filesystem = CATIA.FileSystem set CurrentFile = filesystem.GetFile("/home/<hier steht der restliche Pfad>/input.txt") ############### mein Problem ist, das immer die Fehlermeldung kommt, das die "GetFile Prozedur" Fehlgeschlagen ist ich hab schon all mögliche sachen ausprobiert...statt "File" oder "FileSystem" hab ich wie bei giovane "Object" genommen, aber es kommt immer die selbe fehlermeldung. Und ich hab keine Ahnung woran es liegen könnte, kann es sein, das ich die Excel Datei Falsch exportiert hab oder so? (hab sie als txt exportiert "tab seperated") und wollte die Tabelle auslesen. schonmal danke im Vorraus MfG [Diese Nachricht wurde von Species8472 am 01. August 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Isele Mitglied CAD System Ingenieur

 Beiträge: 84 Registriert: 22.02.2001
|
erstellt am: 04. Aug. 2003 12:54 <-- editieren / zitieren --> Unities abgeben:          Nur für giovane
Hallo zusammen, Hatte ein ähnliches Problem mit einem Textfile. Ich habe das komplette File in einen String eingelesen, und diesen anschliessend mit SPLIT aufgetrennt: Zum WHILE Problem: Probiert es mal mit WEND statt END WHILE Zum TEXT-FILE Problem: Die Variable ZEICHENFOLGE ist global, der String lokal (Speicherplatz). ' Dim zeichenfolge As Variant ' '---(...)----------------------- ' Private Sub Fileread(path As String) ' Const ForReading = 1, ForWriting = 2, ForAppending = 3 Dim filesystem As Variant Dim filetoread As Variant Dim stringarray As String ' Set filesystem = CreateObject("Scripting.FileSystemObject") Set filetoread = filesystem.OpenTextFile(path, ForReading, 0) stringarray = filetoread.ReadAll zeichenfolge = Split(stringarray, " ", -1, vbTextCompare) filetoread.Close End Sub Hoffe es hilft euch. Gruss Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |