Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Textfile zeilenweise einlesen und zeilen splitten!

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 CATIA & Co.
  
Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
Autor Thema:  Textfile zeilenweise einlesen und zeilen splitten! (3814 mal gelesen)
giovane
Mitglied



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

Beiträge: 86
Registriert: 31.08.2002

erstellt am: 30. Jul. 2003 10:34    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,
wie kann ich im catia macro eine textdatei einlesen, dieses zeilenweise und dann diese zeilen an speziellen stellen (z.B. Trennzeichen #) splitten?

bekomme es einfach nicht hin!

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

Tstone
Mitglied
Werkzeugkonstrukteur


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

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 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 giovane 10 Unities + Antwort hilfreich

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



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

Beiträge: 16
Registriert: 30.07.2003

erstellt am: 30. Jul. 2003 14:44    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 giovane 10 Unities + Antwort hilfreich

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



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

Beiträge: 86
Registriert: 31.08.2002

erstellt am: 30. Jul. 2003 18:27    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

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



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

Beiträge: 86
Registriert: 31.08.2002

erstellt am: 30. Jul. 2003 21:46    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

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


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

Beiträge: 322
Registriert: 09.10.2002

R6/V2010

erstellt am: 31. Jul. 2003 10:25    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 giovane 10 Unities + Antwort hilfreich

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



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

Beiträge: 16
Registriert: 30.07.2003

erstellt am: 01. Aug. 2003 11:58    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 giovane 10 Unities + Antwort hilfreich

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


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

Beiträge: 84
Registriert: 22.02.2001

erstellt am: 04. Aug. 2003 12:54    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 giovane 10 Unities + Antwort hilfreich

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

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