| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
|
Autor
|
Thema: Aufruf externes Programm: Übergabe von Strings mit Leerzeichen (1889 mal gelesen)
|
PyroX82 Mitglied

 Beiträge: 30 Registriert: 07.10.2005
|
erstellt am: 16. Aug. 2006 13:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, Ich möchte mit CATScript ein Programm aufrufen, dem ich Parameter übergebe. Die Parameter werden als Variablen angeben. Die Strings enthalten z.T. auch Leerzeichen. Mein Problem ist hierbei, dass das Leerzeichen eigentlich auch die Parameter trennt. So ist dann z.B. der Wert "C:\Dokumente und Einstellungen" in diesem Fall Parameter1=C:\Dokumente, Parameter2=und Parameter3=Einstellungen. Das ist natürlich unpraktisch. Aufrufen tu ich das in etwa so: Code:
params = param1 & " " & param2 & " " & param3 & " " & param4& " " & param5 & " " CmdLine = sMacroPath & sSep & "programm.bat " & paramsErgebnis = CATIA.SystemService.ExecuteProcessus(CmdLine)
Ich gehe den Web über die Variablen, da ich zur Laufzeit des Makros die Parameter vom Benutzer abfrage. Weiß da jemand eine Lösung? Ich kann ja die Variablen leider nicht mehr in "" packen, da sie ja sonst nicht mehr als solche erkannt werden, sondern als String. Das Programm wird gestartet, allerdings sind die Parameter dann Müll. Wenn keine Leerzeichen drin sind, funktioniert alles. Vielen Dank schonmal, Gruß PyroX82 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
   
 Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 16. Aug. 2006 14:08 <-- editieren / zitieren --> Unities abgeben:          Nur für PyroX82
Hallo proxy; kannst du nicht ein anderes Zeichen für die Variablentrennung benutzen? Ich habe das zumindest so oft bei mir gelöst. Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite http:\\catia.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
okl Mitglied Wirtsch-Ing (Maschbau)
 
 Beiträge: 157 Registriert: 21.04.2006 2x3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1800, Delmia V5R16 SP1, Win XP Prof SP2, Office, VS 2005, VB 6, Inventor (Test), VBExpress .NET 2005 Adminrechte
|
erstellt am: 16. Aug. 2006 14:11 <-- editieren / zitieren --> Unities abgeben:          Nur für PyroX82
Hallo PyroX82, hab's nicht getestet, aber versuch doch mal in deinem Parameter c:\Dokumente und Einst... die Leerzeichen mit %20 zu ersetzen oder nutze die gute alle 7.3-Notation, also c:\Dokume~\Progr~1\Mein~1.exe Keine Ahnung, ob's funzt. Ist nur ne Idee von mir. okl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PyroX82 Mitglied

 Beiträge: 30 Registriert: 07.10.2005
|
erstellt am: 16. Aug. 2006 14:25 <-- editieren / zitieren --> Unities abgeben:         
Hi Danke für die Tips, werde sie mal ausprobieren. Einige Variablen les ich ja auch von den Systemvariablen aus. Insofern müsste ich erst den gesamten String durchgehen und alle Leerzeichen durch %20 ersetzen. Die andere Variante mit dem Kürzen....muss da erst noch schauen...denn wenn es 2 Ordner gibt, wo die ersten 8 Zeichen gleich sind, dann hab ich ein Problem. Gruß PyroX82 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PyroX82 Mitglied

 Beiträge: 30 Registriert: 07.10.2005
|
erstellt am: 16. Aug. 2006 14:46 <-- editieren / zitieren --> Unities abgeben:         
|
PyroX82 Mitglied

 Beiträge: 30 Registriert: 07.10.2005
|
erstellt am: 16. Aug. 2006 14:48 <-- editieren / zitieren --> Unities abgeben:         
@Jens Jansen Wie kann ich sowas lösen? Ich übergebe die Parameter an eine Batchdatei, die wiederum ein Programm aufruft. Das muss doch wissen, wie die Variablen getrennt sind und ich glaube, das kapiert es nicht, wenn ich statt dessen Kommas verwende. Eigentlich will ich ja direkt aus dem Makro ein Java Jar File aufrufen, aber das geht irgendwie nichtgescheit (die java.exe ist nicht immer am gleichen Ort installiert), deswegen der Umweg über die Batch-Datei. Grüße, PyroX82 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexE78 Mitglied Ing.

 Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 16. Aug. 2006 14:58 <-- editieren / zitieren --> Unities abgeben:          Nur für PyroX82
|
Tapani. Mitglied

 Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 16. Aug. 2006 15:57 <-- editieren / zitieren --> Unities abgeben:          Nur für PyroX82
moin, wenn man in CATIA die zusätzlichen Double-Quotes (") als chr(34) in den String einbettet funktionierts. Hier noch ein kleines Beispiel:
Code: sub CATMain() CmdLine = "f:\tmp\doit.bat " & chr(34) & "f:\tmp\a b\" & chr(34) Ergebnis = CATIA.SystemService.ExecuteProcessus(CmdLine) end sub
und in doit.bat:
Code: dir %1 > f:\tmp\bla.txt
CU Tapani ------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PyroX82 Mitglied

 Beiträge: 30 Registriert: 07.10.2005
|
erstellt am: 16. Aug. 2006 16:01 <-- editieren / zitieren --> Unities abgeben:         
|
Stoffel Mitglied Student
 
 Beiträge: 322 Registriert: 09.10.2002 R6/V2010
|
erstellt am: 25. Aug. 2006 13:22 <-- editieren / zitieren --> Unities abgeben:          Nur für PyroX82
Zitat: Original erstellt von PyroX82: Gibt es eigentlich eine Funktion in CATScript, mit dem man Zeichen ersetzen kann? Ich find in der blöden v5automation.chm nichts gescheites.
Nein, in CATScript findest du nix in dieser Richtung. Es handelt sich ja auch nicht um eine CATIA Funktion, sondern eher um eine VBScript Funktion. Dafür, dass du an der falschen Stelle suchst, kann die "blöde" V5Automation gar nix. Meiner Meinung nach ist das eine ziemlich gute Dokumentation über die CATIA API. Aber gegen DAUs kann sie auch nix machen. TIPP: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/scriptinga.asp Da findest du dann auch die Doku über VBScript! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |