Polecenie Lisp getfiled

Witam

Oto mała zagadka, czy możesz mi pomóc ją rozwiązać?

Zobacz załącznik, aby uzyskać potwierdzenie

Wyjaśnienia:

- Tworzę zmienną pathcible do przechowywania ścieżki "H:\\cad2014\\"

- Przechowuję w zmiennej fcible wynik funkcji getfiled

Test 1, dla wyboru pliku A_BSM.txt zmiennej fcible daje mi "A_BSM.txt"

Spróbuj 2, dla wyboru pliku F000d_ADEMOLIR.txt zmienna fcible daje mi "F000d_ADEMOLIR.txt"

Wszystkie pliki dają mi podobną odpowiedź, tj. nazwę pliku z wyjątkiem,

Test 3, dla wyboru pliku A000d_ADEMOLIR.txt zmiennej fcible daje mi "H:\\cad2014\\A000d_ADEMOLIR.txt"

co oznacza błąd dla reszty programu w tym pliku?

W rzeczywistości plik z procesu 2 jest identyczny z procesem 3, jest to kopia pliku A000d_ADEMOLIR.txt, o zmienionej nazwie?

Pytanie, które sobie zadaję, dotyczy wyniku funkcji getfile, czy powinien:

- Podaj mi tylko nazwę pliku?

- podać mi ścieżkę i nazwę pliku?

Z góry dziękuję 

jplunus powiedział:


2019-10-17_15h02_52.png

Zgodnie z tą stroną (pomoc getfilled) przyjrzałbym się ostatniemu parametrowi ("8").

1 polubienie

Stefbeno, dziękuję

Problem tkwi w parametrze, ale  to właśnie ("8") powinienem użyć.

8 (bit 3) - Jeśli ten bit jest ustawiony, a bit 0 nie jest ustawiony, 
getfiled wykonuje wyszukiwanie w bibliotece dla wprowadzonej nazwy pliku.
Jeśli znajdzie plik i jego katalog w ścieżce wyszukiwania 
biblioteki, usunie go i zwróci tylko nazwę pliku.
(Ścieżka nie jest usuwana, jeśli wykryje, że plik o tej samej 
nazwie znajduje się w innym katalogu).
Jeśli ten bit nie jest ustawiony, getfiled zwraca pełną nazwę pliku, 
w tym ścieżkę.
Ustaw ten bit, jeśli używasz okna dialogowego do otwierania 
istniejącego pliku, którego nazwę chcesz zapisać na rysunku 
(lub w innej bazie danych).

- Szukałem nieruchomości bez  powodzenia

- Zamieniłem A na a, ten sam problem

-Zamieniłem A na X, nie ma już problemu 

Poddaję się i rozwiązuję problem, wprowadzając następujący warunek, który następuje

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

W ten sposób, niezależnie od tego, czy funkcja wstawi ścieżkę, czy nie, mój wynik będzie zawsze taki sam

a rutyna nie będzie już blokowana.

Klasa A+