[FreePascal] Okno DOS

0

Witam,
działam w freepascalu na Vista i mam następujący probelm.

Pokazuje mi się okno DOS w którym jest wynik mojego programu, ale ma ono wymiary ok. 80/30

To nie jest jeszcze taki problem, ale jeżeli zrobię pętlę od 1 do 100 który wyświetla każdą liczbę w oddzielnej linijce to kasuje pokazuje mi tylko 30 ostatnich (tyle co wysokość okna).

Nie chodzi tutaj o błędny kod, ani o przewijanie, ponieważ ten sam skrypt na XP działa w 100% dobrze.

Gdzie mogą być ustawienia tego błędu i co mam z tym zrobić?

P.S. Dla upartych oto skrypt:

uses crt;
var i:integer;

begin
clrscr;
 for i:=1 to 100 do writeln(i);
readkey;
end.
0

Powinno rozwiazać Twój problem. Co 30 wierszy nastąpi pauza.

begin
  ClrScr;
  for i := 1 to 100 do
  begin
    if i mod 30 = 0 then ReadKey;
    WriteLn(i);
  end;
end;
0

... ja się nie pytam jak rozwiązać problem z kodem, lecz jak rozwiązać problem z programem.

0

A powiedz, co rozumiesz pod pojęciem "działa dobrze", ba ja problemu nie wiedzę.

0

Nie nie widzisz, tylko nie rozumiesz. Ja piszę NIE o kodzie lecz o problemem z oknem DOS w Vista.

Działa wszystko poprawnie tylko kiedy rozszerzę okno na max, ale nie na wszystkich komputerach z Vistą.

Teraz rozumiesz, czy nadal nie widzisz problemu?

0

Właściwości cmd.exe -> układ -> zwiększ sobie rozmiar "bufora ekranu" wysokości.
O to ci chodzi? Czy o sam rozmiar okna? Też to tam możesz zmienić.

0

Z tego co pamiętam to we free pascalu okienko konsoli uruchamia się w fullscreen, tylko nie wiem czy to standardowe okienko konsoli jest przestawiane na fullscreen podczas uruchamiania przez IDE, czy tam jest jakiś własny emulatora środowiska dosowego

rozwiązanie problemu autora:
uruchamiaj przez shella swój program(poprzez uruchomienie pliku *exe) a nie przez Free pascala, wtedy będzie normalny wygląd konsolki windosowej, która będzie miała pasek przewijania

0

Dokładnie to stosowałem ale nie zawsze to działa (nie na każdym komputerze). Czyli jest to wina Visty.

Można temat zamknąć, bo nic z tym więcej nie da się zrobić. Dzięki za chęci mimo że nie skuteczne :D
Pozdrawiam i życzę szczęśliwego nowego roku.

0
Atverstyt napisał(a)

... ja się nie pytam jak rozwiązać problem z kodem, lecz jak rozwiązać problem z programem.
Wprowadziłeś minie w błąd zakładając wątek w dziale programistycznym. Jest dział Hardware/Software

0

To prawda dałem to w złym dziale, ale mimo to "Lenin mówił czytać". Nawet gdy daje coś w złym dziale (nie zauważyłem Hardware/Software) to moderatorzy mogą to przenieść. Mimo wszystko jeżeli jest jakiś post to wypadało przeczytać, ale ze zrozumieniem.

Nie chodzi tutaj o błędny kod, ani o przewijanie, ponieważ ten sam skrypt na XP działa w 100% dobrze.

Gdzie mogą być ustawienia tego błędu i co mam z tym zrobić?

Napisałem że nie chodzi tutaj o błędny kod, a później pytałem się o ustawienia.
W dodatku napisałem przed Twoim pierwszym postem:

... ja się nie pytam jak rozwiązać problem z kodem, lecz jak rozwiązać problem z programem.

Po prostu przyznaj się do swojego błędu lub w ogóle nie poruszaj tego tematu.

Jeszcze raz proszę o zamknięcie tego tematu o ile nie wystąpi kolejny post po moim.

0

Spokojnie:
To TY masz problem nie MY.
To TY masz pogląd co nie działa nie MY.
To TY masz całkowite pojęcie nie MY.
To TY masz wizję jak to chcesz mieć zrobione nie MY.

Opcje:
1). Nie ciskaj się tak. Głupka z siebie robisz. Przeczytaj RTFM
2). Tak jak opiszesz problem tak dostaniesz odpowiedź.
3). Kod który wkleiłeś de facto jest błedny, to że go nie widzisz nie znaczy, że nie ma
4). Jak nie podoba się to, że próbujemy rozwiązać TWÓJ problem tak jak pozwala nam na to wiedza i umiejętności to rozwiąż go SAM lub zmień forum.

// Upppsss, wystąpił post po Twoim.

0

Przestań mówić o jakimś ciskaniu. Ja odpisałem na bezsensowny post w którym adf88 tłumaczy się tym że daję pytanie w złym dziale. Z doświadczenia wiem że odpowiadanie na zadane pytania wykonuje się po uprzednim przeczytaniu treści pytania, oraz innych postów, a nie po temacie działu.

W dodatku napisałem, może trochę chaotycznie że nie chodzi o kod (akurat to ująłem dokładnie takimi słowami).

Mam nadzieję że teraz rozumiesz czemu to napisałem. Każdy ma prawo do błędu, ale nie potrzebnie zmienia temat, a tym bardziej zwala winę swojej nieuwagi na mnie.

P.S. Mam nadzieję że zaczniesz ze mną rozmawiać na wyższym poziomie niż ten który pokazałeś w ostatnim poście. I pokaż mi błąd w kodzie (tylko nie mów mi o readkey które zastosowałeś).

0

Aj nie ciskajcie się już tak, po co.
Atverstyt - jak zadasz pytanie tak cię rozumieją. Szczerze powiedziawszy kilka razy czytałem i nie mogłem zrozumieć, jakoś masę rzeczy nie na temat mnie odwracało od sedna sprawy. Przede wszystkim nie napisałeś, że chodzi ci o program odpalany ze środowiska, a nie normalnie. Pisałeś, że problem jest ogólnie z oknem, a nie z kompilatorem. Dopiero po poście crayze pokapowałem się, że o to tak naprawę ci chodzi. Fin.

0

To prawda że napisałem to jak koślawiec, ale mimo to chodziło o okno DOS. Mam nadzieje że nie gniewasz się po poście "atakującym".

0

A jak ten DOS uruchamiasz ?

0

On mówi o konsoli uruchamianej przez FPC przy opcji "Run" albo "Compile and Run"

0

Nie ważne czy robię Run/Compile and Run, czy z pulpitu to i tak występuje ten błąd.

Okno ma wymiary (standardowe) 80/30. Po wykonaniu programu który zajmuje 100 wierszy powinienem mieć możliwość przesunięcia suwakiem do początku, natomiast tutaj to nie działa. Pokazuje mi się tylko 30 ostatnich wierszy i nie da się tego przesunąć do początku (tak jakby ucinał resztę wierszy).

Powinien program zajmować od 1-100 wiersza, a okno DOS powinno pokazywać wyniki od 71-100 wiersza. Natomiast jest tak że pokazuje wyniki od 71-100 wiersza, ale natomiast resztę wyników (1-70) ucina.

0

W takim razie czytaj mój pierwszy post w tym temacie, bo chyba o to ci chodzi.

0

Robiłem tak, ale mimo to są takie błędy że po zmianie wielkości okna na moim komputerze działa wszystko dobrze, natomiast u mojej dziewczyny pokazuje tylko ostatnie 50 wyników bez zależności wysokości okna (stąd napisałem na forum).

Mi się zdaje że to po prostu wina windowsa bo na XP to działa bez zarzutów.

Kod dałem najprostszy żeby przedstawić problem z oknem DOS.

0

A więc problem z kodem. To powinno pomóc:

uses Windows;

procedure UstawBuforKonsoli;
var 
  COORD coord;
begin
  coord.X = 80;
  coord.Y = 100;
  SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coord);
end;

I to nie jest żaden DOS. Na Vist'a już nie ma mulatora DOS'a, nie odpalisz programu DOS'owego.

To jest okno konsoli, a nie DOS'a. Czyli wiersz poleceń. (Prawie) każdy system operacyjny ma taki tryb, nie tylko DOS.

Inną sprawą jest, że oczekujesz funkcjonalności która nie jest standardem, to rozszerzenie (przewijanie paskiem) jest jak widać ciut inaczej ustawione na różnych Windowsach więc to żaden błąd.

0

Kod dałem po to by przedstawić problem. Napisałem najprostszą pętlę która wykonywana jest 100 razy z wynikami wypisywanymi jeden pod drugim po to żeby pokazać błąd wiersza poleceń.

Jeżeli ten sam kod na XP działa poprawnie (nie ucina wyników i można przewijać okno poleceń) a na Vista jest tak że nie mogę przewinąć do początku bo ucina tę część wyników.

To może być problem tylko z wierszem poleceń a nie ze skryptem. Dodam jeszcze że FreePascal na XP instaluje się i działa bez zarzutów natomiast w Vista jest tak że instaluje się poprawnie, ale po uruchomieniu programu przy próbie kompilacji wyskakuje jakiś błąd związany z Opentium3. I trzeba to w opcjach zmienić na OPpentium3 (jakoś tak, juz nie pamiętam).

0

Ty masz człowieku problem ze sobą, a nie z systemem operacyjnym.

A już w ogóle nie rozumiem chęci pomagania takiej osobie jak Ty.

0

Atverstyt, a nie wpadłeś na genialny pomysł ustawienia właściwości konsoli tego programu? Vista działa dobrze, po prostu ustawia bufor 1:1. Ustawienia dla cmd.exe to ustawienia dla cmd.exe, dla innego programu, którego rodzicem nie będzie - nie będą mieć znaczenia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1