Lisp getfiled Befehl

Hallo

Hier ist ein kleines Rätsel, können Sie mir helfen, es zu lösen?

Zur Bestätigung siehe Anhang

Erklärungen:

- Ich erstelle eine pathcible Variable, um den Pfad "H:\\cad2014\\" zu speichern.

- Ich speichere in der fcible-Variablen das Ergebnis der getfilet-Funktion

Test 1, für die Wahl der Datei A_BSM.txt die fcible-Variable gibt mir "A_BSM.txt"

Versuchen Sie 2 für die Auswahl der Datei, F000d_ADEMOLIR.txt die Variable fcible mir "F000d_ADEMOLIR.txt" gibt

Alle Dateien geben mir eine ähnliche Antwort, d.h. den Namen der Datei außer,

Test 3, für die Wahl der Datei A000d_ADEMOLIR.txt die fcible-Variable ergibt mir "H:\\cad2014\\A000d_ADEMOLIR.txt"

was einen Fehler für den Rest des Programms in dieser Datei impliziert?

In Wirklichkeit ist die Akte von Versuch 2 identisch mit Versuch 3, es handelt sich um eine Kopie der Akte A000d_ADEMOLIR.txt, umbenannt?

Die Frage, die ich mir stelle, bezieht sich auf das Ergebnis der getfilet-Funktion, sollte sie:

- Geben Sie mir nur den Namen der Datei?

- Geben Sie mir den Pfad und den Namen der Datei?

Vielen Dank  im Voraus

jplunus


2019-10-17_15h02_52.png

Laut dieser Seite (getfilled-Hilfe) würde ich mir den letzten Parameter ("8") ansehen.

1 „Gefällt mir“

Stefbeno, danke

Das Problem kommt vom Parameter, aber  es ist die ("8"), die ich verwenden sollte.

8 (Bit 3) - Wenn dieses Bit gesetzt ist und Bit 0 nicht gesetzt ist, 
führt getfiled eine Bibliothekssuche nach dem eingegebenen Dateinamen durch.
Wenn die Datei und ihr Verzeichnis im Suchpfad 
der Bibliothek gefunden werden, werden sie gelöscht und nur der Dateiname zurückgegeben.
(Der Pfad wird nicht gelöscht, wenn erkannt wird, dass sich eine Datei mit demselben 
Namen in einem anderen Verzeichnis befindet.)
Wenn dieses Bit nicht festgelegt ist, gibt getfiled den vollständigen Dateinamen 
einschließlich des Pfads zurück.
Legen Sie dieses Bit fest, wenn Sie das Dialogfeld verwenden, um eine 
vorhandene Datei zu öffnen, deren Namen Sie in der Zeichnung 
(oder in einer anderen Datenbank) speichern möchten.

- Ich habe mir Immobilien ohne  Erfolg angeschaut 

- Ich habe das A durch a ersetzt, gleiches Problem

-Ich habe das A durch X ersetzt, kein Problem mehr

Ich gebe auf und löse das Problem, indem ich eine Bedingung einführe, die folgt

(if (= pathcible (substr fcible 1 11) (setq fcible (substr fcible 12)))

Auf diese Weise wird mein Ergebnis immer gleich sein, unabhängig davon, ob die Funktion den Pfad einfügt oder nicht

und die Routine wird nicht mehr blockiert.

A+