| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Prüfen, ob Datei vorhanden ist (1529 mal gelesen)
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 28. Mrz. 2012 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich muss mich noch einmal melden. Ich wüsste gern, wie man am einfachsten prüfen kann, ob eine Datei (keine mi-Datei) vorhanden ist. Ich kenne also Pfad und Dateinamen. Muss man jetzt versuchen, die Datei zu öffnen und schauen, ob ein Fehler zurückgegeben wird oder kann man das einfach abfragen? Es wäre nett, wenn mir da jemand auf die Sprünge helfen könnte. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 28. Mrz. 2012 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, einfach abfragen, na ja Merkwürdigerweise gibt es eine Funktion DIRECTORY_EXISTS (vorhanden in: v17+16 ja; v15 ?; v14 Nicht) die das Vorhandensein eines Verzeichnisses prüft, aber etwas vergleichbares für Dateien ist mir nicht bekannt. Du kannst das aber per Macro lösen. Habe in den Beispielen reele Pfad\Dateinamen verwendet. Die Befehle erstellen Dateien, deren Inhalt gelesen und ausgewertet werden kann. 1. Me10-Code CATALOG 'S:\users\fhk\d_work' DETAIL_INFO SELECT 'FILE_NAME' = 'ok_macro.m' DEL_OLD 'c:\tmp\Dateiabfrage.m' Antwort in Datei 'c:\tmp\Dateiabfrage.m' Wenn Datei 'ok_macro.m' vorhanden: ================================================================================ FILE_NAME: ok_macro.m PHYS_NAME: ok_macro.m FILE_DESC: Reg FILE_TYPE: Reg FILE_SIZE: 1367 MODIFY_DATE: 26-Mar-2012 10:16:16 NUM_ACCESS: 0 ================================================================================ Antwort wenn nicht vorhanden: Leere Datei 2. Über DOS-befehl RUN GRAPHIC ('dir S:\users\fhk\d_work\ok_macro.m /b > c:\tmp\Dateiabfrage2.m 2>&1') Antwort in Datei 'c:\tmp\Dateiabfrage2.m' Wenn Datei 'ok_macro.m' vorhanden: ok_macro.m Wenn nicht vorhanden: File Not Found (oder ähnlich) Die entstandenen Dateien kannst du dann mit folgenden Befehlen lesen lassen: OPEN_INFILE 1 'c:\tmp\Dateiabfrage.m' READ_FILE 1 Variable { Wobei jedes READ_FILE jeweils eine Zeile liest und der Variable zuordnet } CLOSE_FILE 1 Eine leere Datei oder das Ende der Datei wird 'END-OF-FILE' gelesen Die Variable kannst du analysieren und deine Schlussfolgerungen ziehen. Hoffe, dass hilft dir weiter ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 28. Mrz. 2012 15:37 <-- editieren / zitieren --> Unities abgeben:
Nochmal hallo! Ich wollte das Problem mal etwas präzisieren: ich möchte mit PURGE_FILE Dateien löschen, wüsste aber gerne, ob die Datei vorher überhaupt vorhanden war und anschließend, ob sie auch tatsächlich gelöscht wurde (falls jemand die gerade geöffnet hat, geht das ja nicht). Wenn ich jedenfalls mit obigem Befehl rumspiele, kann ich mit meinen bescheidenen Mitteln nicht feststellen, ob tatsächlich die Datei gelöscht wurde oder nicht. Mir scheint es, dass es herzlich egal ist, ob die zu löschende Datei wirklich vorhanden ist. Scheint mir eine faule Programmiersprache zu sein: "Datei nicht da? Na prima, muss ich ja nix tun. Fehler meld' ich auch nicht, ich leg mich wieder hin." Wäre schön, wenn noch jemand eine Idee hätte. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 28. Mrz. 2012 15:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Friedhelm! Da haben sich unsere Beiträge gerade überschnitten. Ja, vielen Dank, mit deinem Ansatz kann ich was tun. Ist zwar völlig anders, als ich erwartet hätte, spielt aber keine Rolle. Super, wieder ein Problem gelöst. Dann leg ich mich jetzt auch wieder hin. Viele Grüße Tmo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 28. Mrz. 2012 16:55 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Noch etwas nachbessern Help/Programmierhandbuch sagt: Code:
--->(PURGE_FILE)->|Dateiname|->+-+------------------>+->+->+-->(CONFIRM)-->+-> | | | | | | | `<-|Ausd|-(SELECT)<-' | '-->(SCREEN)--->' | | '--->(RECURSIVE)-------->'Mit der Option SCREEN wird der integrierte Bildschirm-Editor (siehe EDITOR) aufgerufen, der es Ihnen ermöglicht, die Datei- und Verzeichnisliste zu überprüfen; Änderungen des Bildschirminhalts werden hierbei ignoriert. Bei einem Abbruch (ESC) der Editor-Sitzung wird nichts verändert.
Im Klassischen UI muss der Löschvorgang mit CTRL+D bestätigt werden. ESC bricht ab. ! Wird das Notepad-Fenster im Windows-UI geschlossen werden die gewählten Dateien gelöscht. Nix mit Abbruch (ESC) Getestet in v17 M025 ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 29. Mrz. 2012 08:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Friedhelm! Nochmal danke für deine Mühe. Aber diese Option habe ich gesehen und so verstanden, dass ich aktiv eingreifen kann. So ist es aber nicht geplant. Ich muss lediglich die Rückmeldungen auswerten, die ich aus deinem ersten Vorschlag ableite, um für den Benutzer bei Bedarf eine Meldung auszugeben. Ich denke, mit dem, was du mir bisher geliefert hast, komme ich ans Ziel. Sollte noch was sein, melde ich mich wieder. Das ist durchaus als Drohung zu verstehen. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
r.hoffmann Mitglied Techniker
Beiträge: 127 Registriert: 07.12.2006 OSD 13.2 20.4
|
erstellt am: 29. Mrz. 2012 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 30. Mrz. 2012 07:45 <-- editieren / zitieren --> Unities abgeben:
Hallo Robert! Vielen Dank für deinen Tipp. Genau das wäre es. Mittlerweile habe ich aber Friedhelms Ansatz verwirklicht und es läuft bestens. Trotzdem danke sehr, solche Infos sind immer wertvoll und vielleicht profitiert ja ein anderer noch davon. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
friedhelm at work Mitglied Techniker Aluminium Profile
Beiträge: 882 Registriert: 01.04.2003 Creo Elements Direct /Drafting 17+20.x ui classic-Tablett + Ribbon, Modeling 17-20.0,.2,.4,.5 Lizenz auf USB-Netzwerkadapter PE-Express 8 Win 10 Enterprise 64 @work Win 10 Pro 64 @home Notepad++,IrfanView,eDrawings, ....
|
erstellt am: 30. Mrz. 2012 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Zitat: Original erstellt von Tom R: solche Infos sind immer wertvoll und vielleicht profitiert ja ein anderer noch davon.
Ja, ich. Habe demnächst wieder was zu tippen, da werde ich es auf diese Weise machen. Danke Robert ------------------ Gruss Friedhelm Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ME10-Faultier Mitglied
Beiträge: 25 Registriert: 30.03.2015 Direct Drafting 18.1
|
erstellt am: 30. Mrz. 2015 17:30 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Zitat: Original erstellt von friedhelm at work: Hallo Tom, einfach abfragen, na ja Merkwürdigerweise gibt es eine Funktion DIRECTORY_EXISTS (vorhanden in: v17+16 ja; v15 ?; v14 Nicht) die das Vorhandensein eines Verzeichnisses prüft, aber etwas vergleichbares für Dateien ist mir nicht bekannt. Du kannst das aber per Macro lösen. Habe in den Beispielen reele Pfad\Dateinamen verwendet. Die Befehle erstellen Dateien, deren Inhalt gelesen und ausgewertet werden kann. [b]1. Me10-Code CATALOG 'S:\users\fhk\d_work' DETAIL_INFO SELECT 'FILE_NAME' = 'ok_macro.m' DEL_OLD 'c:\tmp\Dateiabfrage.m' Antwort in Datei 'c:\tmp\Dateiabfrage.m' Wenn Datei 'ok_macro.m' vorhanden: ================================================================================ FILE_NAME: ok_macro.m PHYS_NAME: ok_macro.m FILE_DESC: Reg FILE_TYPE: Reg FILE_SIZE: 1367 MODIFY_DATE: 26-Mar-2012 10:16:16 NUM_ACCESS: 0 ================================================================================ Antwort wenn nicht vorhanden: Leere Datei Eine leere Datei oder das Ende der Datei wird 'END-OF-FILE' gelesen Die Variable kannst du analysieren und deine Schlussfolgerungen ziehen. Hoffe, dass hilft dir weiter
Danke, daß hat mir sehr geholfen. Ich hatte es schon mit TRAP_ERROR und FILE_INPUT versucht wie in dem Makro eva_file_exists von www.me10-makros.de, aber da bekam ich immer eine ERROR-ENCODING-Fehlermeldung. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |