Zapamiętywanie ostatniej wprowadzonej wartości


Recommended Posts

Dzień dobry.

Wymyśliłem rozwiązanie tytułowego problemu przy użyciu funkcji write-line i tworzeniu pliku txt.

(defun c:test () 
;odczyt rzednej z pliku
(setq f (findfile (strcat (getvar 'dwgprefix) "OstWprRzedna.txt")))
(if (not f)
	(setq something 190)
    (progn (open (strcat (getvar 'dwgprefix) "OstWprRzedna.txt") "r")
	(setq something (atof(read-line f)))
	(close f)
	)
)
; koniec odczytu rzednej z pliku
(setq PozOdn (cond 
    ((getreal (strcat "\nPodaj poziom odniesienia <"(rtos something 2 2)"> \n")))
	(something)
	);koniec cond
); koniec steq
; zapis wprowadzonej rzendej do pliku txt
(setq file (open (strcat (getvar 'dwgprefix) "OstWprRzedna.txt") "w"))
(write-line (rtos PozOdn) file)
(close file)
;koniec zapisu wprowadzonej rzednej do pliku
);end

Oczywiście coś mi nie działa i proszę o pomoc.
PS  żeby sprawdzić czy działa trzeba uruchomić dwa razy.

Paweł

 

Link to comment
Share on other sites

W mojej subiektywnej opinii, pomysł nieco chybiony. Co będzie gdy w tym samym katalogu będzie więcej plików rysunkowych? Wszystkie będą się odwoływać do tego samego pliku tekstowego? A co jeśli przypadkowo plik zostanie usunięty? Nie wiemy czemu ma to służyć, niemniej widzę chyba lepsze rozwiązania: zapamiętanie danych w rysunku np. Zmienna USERRn (ulotne - niezapamiętywane w sesji), lub jako dane niegraficzne - słownik w namedobjdict, a w nim XRecord (zapamiętane na stałe). Ponadto XData przypięta do jakiegoś obiektu, itp.

Link to comment
Share on other sites

Etapy programu:
1) Najpierw program sprawdza czy istnieje plik OstWprRzedna.txt. Jeżeli nie, to ustawia domyślną wartość 190, jeżeli tak, to pobiera wartość z pliku.
2) Program prosi o podanie wartości (w nawiasie podając wartość domyślną/ostatnią wprowadzoną).
3) Jeżeli wprowadziłem wartość ręcznie, to zapisuje ją do pliku OstWprRzedna.txt
Na obecnym etapie program tworzy plik OstWprRzedna.txt z wprowadzoną wartością, ale przy ponownym uruchomieniu wyświetla błąd:

; błąd: zły typ argumentu: FILE "D:\.......\OstWprRzedna.txt"

Podejrzewam, że błąd jest w formule odczytu z pliku, który już istnieje.

PS program tworzy plik txt o ścieżce takiej jak plik dwg, więc plik dwg musi być zapisany. 

Link to comment
Share on other sites

No i wszystko się wyjaśniło. A co do (something) to chodzi o taki efekt:

podaj poziom odniesienia:        <domyślna wartość>  ; jak nic nie wpiszę i kliknę enter to wstawia wartość domyślną

Słowo "something" to moja własna inwencja - nic lepszego mi nie przyszło do głowy ;)
Może właściwsze powinno być war1. Tak czy siak dziękuję za wszystkie odpowiedzi.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...