[#1] FileHandle dla "CON:///"
Przypadek jest taki:
- prosty program piszący coś na konsolę (uruchamiany z cli)
- jak go uruchamiam z debuggera w AsmOne czy AsmPro to nie widać żadnego efektu (output gdzieś przepada)
- dlatego dodałem (poglądowo - pominięte są wszystkie nieistotne rzeczy):
con=Open('CON:////Test/AUTO')
SelectOutput(con)
i po tym faktycznie pojawia się osobne okienko konsoli, gdzie widać output programu
Zastanawiam się jak traktować ten filehandle - czy muszę taki pseudo-plik zamykać? Bo np. wywołanie na tym filehandlerze NameFromFH nic nie pokazuje.
W sumie zamykam (w sensie wywołuje Close na tym filehandle), bo co mi szkodzi - nic się nie wywala.
Ale mimo że robię to Close(), to okienko konsoli się nie zamyka - dopiero jak zamknę ręcznie - klikając w gadgeta close.
Potem zacząłem się zastanawiać, jak wygrzebać z sytemu listę wszystkich plików które miały zrobione Open, ale nie zostałły zamknięte? Żaden Scout czy SystemInspector tego nie pokazuje. A może jestem już zbyt skrzywiony linuksowo ("wszystko to plik") i w AmigaOS nie wszystko otworzone przez dos/Open to plik?
[#2] Re: FileHandle dla "CON:///"

@BigBang, post #1

Pamiętaj, żeby przywrócić stary output na koniec programu. Jeśli konsola się nie zamyka, to najprawdopodobniej ma niezerowy open count. NameFromFH nic nie zwróci, bo CON to nie jest filesystem i nie obsługuje typowych dla nich pakietów (a ACTION_IS_FILESYSTEM zwraca DOSFALSE).

Ostatnia aktualizacja: 23.08.2020 16:57:56 przez Jacek Piszczek
[#3] Re: FileHandle dla "CON:///"

@Jacek Piszczek, post #2

O właśnie, zapomniałem o tym wspomnieć Bo nie przywracam tego outputa i nic złego nie zauważyłem.
Program odpalany z CLI niby działa w ramach procesu CLI (chyba? bo z run-em odpalny jest w osobnym), czyli jak zmieniłem output, program się zakończył, to kolejne coś odpalone w tym cli teoretycznie powinno pisać do tego outputa, ale tak nie jest - więc coś tam pilnuje porządku. Jeszcze pogrzebie w RKRM-ach, choć to w sumie nieistotne.
Chcę zdebugować zdisassemblowany program cli, który wypisuje na konsolę, ale z debuggera jego output nigdzie się nie pojawia - stąd te kombinacje z otwieranim CON: i ustawianiem outputa.
[#4] Re: FileHandle dla "CON:///"

@BigBang, post #3

Generalnie system czeka aż przyjdzie na wejście konsoli znak CTRL+\, żeby konsolę zamknąć.

Sprawdź może, czy funkcja Close() zwraca jakąś wartość, bo może w niektórych przypadkach zwrócić błąd.

Co do przywrócenia oryginalnego outputu, o czym pisze Jacek Piszczek, to może być ważne, chociaż dla porządku. Sprawdź wartość zwracaną przez funkcję SelectOutput() - jest to poprzedni output.

Według mnie to, że okienko się nie zamyka może być celowe - użytkownik ma czas na doczytanie komunikatów i naciśnięcie CTRL+\.

Można też sprawdzić, czy nie następuje jakiś wyciek pamięci przy pomocy AVAIL (ja tak zawsze robię przy testowaniu programów).

Ostatnia aktualizacja: 23.08.2020 19:22:27 przez Hexmage960
[wyróżniony] [#5] Re: FileHandle dla "CON:///"

@BigBang, post #1

Uruchamiasz Asmone z workbencha? Jesli tak, sprobuj uruchomic go z shella, wtedy output z twojego programu powinien sie pojawic w oknie shella, z ktorego uruchomiles asmone.
W kazdym razie tak w teorii powinno byc, ale sprobowac nie zaszkodzi...
[#6] Re: FileHandle dla "CON:///"

@docent, post #5

To jest tak oczywiste że aż o tym nie pomyślałem.
Wielkie dzięki za tą podpowiedź, bo to działa bardzo dobrze i jest najprostszymi najlepszym sposobem (przynajmniej w tym przypadku).
[#7] Re: FileHandle dla "CON:///"

@BigBang, post #6

@BigBang
W Asm-One możesz też użyć komendy y.
Ja używam jej w taki o to sposób. Kompilujesz źródło a i potem robisz plik wynikowy wo ram:testcon. I wtedy na przykład robisz y ram:testcon jakiśparametr.
[#8] Re: FileHandle dla "CON:///"

@BigBang, post #6

@BigBang

Hej, jeszcze dodam w temacie, że Close() u mnie zamyka okno konsoli otwartej przez Open("CON:0/0/640/100/");

Ostatnia aktualizacja: 24.08.2020 11:20:57 przez Hexmage960
[#9] Re: FileHandle dla "CON:///"

@Hexmage960, post #8

A sprawdź CON z opcją AUTO.
Bez AUTO konsola mi tylko mignie i nie wiem czy się sama zamyka, czy po Close - bo już nie sprawdzałem. Z AUTO okno zostaje po zakończeniu programu i muszę zamknąć je klikiem w zamykacza okna lub przez Ctrl-\
[#10] Re: FileHandle dla "CON:///"

@BigBang, post #9

Z opcją AUTO też okienko konsoli się zamyka przy Close().

AUTO to opcja, która sprawia że okienko pokazuje się dopiero, gdy coś wyślemy do konsoli.
[#11] Re: FileHandle dla "CON:///"

@Hexmage960, post #10

OK, wiem już - żeby nie zamykało zrobiłem CON:////AUTO/WAIT
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem