kilka pytań na temat aplikacji konsolowych i nie tylko

0

Witam! Jestem jeszcze zielony w Delphi i dopiero sie ucze programować. Swoja naukę zacząłem z książką pt. "Delphi 6 Ćwiczenia praktyczne" autorstwa Adama Boduha (jest świetna). Jak na razie przerobiłem dział o Object Pascalu. Analizując kody podane w tej ksiażce niektórych rzeczy nie rozumiem, więc zwraca sie z prośbą o pomoc. jestem bardo dociekliwy, wiec staram się zrozumieć kazdą linijke kodu, żeby sie dobrze nauczyc programować. A więc do rzeczy:

  1. Chciałbym sie coś dowiedzieć na temat (nie wiem jak to sie nazywa, ale ja na to mówie znaki przyporządkowania) znaków przyporządkowania, a mianowicie:

:
:=

<>

po pierwsze do czego który sie uzywa (bo wiem, że np. : (dwukropek) używa sie do zmiennych, np. s : string)
po drugie: czy są jakies inne znaki tego typu?

  1. W "ćwiczeniach praktycznych" jest takie cwiczenie z takim czyms:

[ssShift]

co to oznacza? (czy oznacza to wciśniecie klawisza Shift? a jesli tak to czy wcisniecie klawisza CTRL oznaczymy [ssCtrl] czy [ccCtrl], czy moze jakos inaczej?)

  1. co znaczy Trunc w delphi?

np.(linijka kodu)

Result := Trunc(Result);

  1. To jest przedostatnie pytanie. A mianowicie chodzi mi o aplikacje konsolowe. Dla zabawy pisze sobie test w aplikacji konsolowej (bo poziom wiadomosci pozwala mi na takowego zrobienie ;-)). I tu moje pytanie: Jaka komenda czysci okno? (nie wiem czy zostałem zrozumiany: chodzi mi o to, że jak pisze test zeby kazde pytanie było na czystym polu, zeby nie mozna było suwakiem przesunąc do góry i sprawdzic jakie były juz pytania).

  2. Ostatnie pytanie.Tu także chodzi mi o aplikacje konsolowe. A mianowicie czy można w takim programie zmienic wielkosc czcionki i/lub kolor?

Z gory dzieki za odpowiedzi i cierpliwosc :-)
Pozdrawiam
Queshczyn

0

To w aplikacjach konsolowych jest "suwak" ??

A tak do temtu to wiekszosc odpowiedzi mozesz znalezc na 4p.
Pewno wyjde na lamke ale szczerze mowiac nie wiem co to znaczy [ssShift] wiec chetnie tez sie dowiem.

0

To w aplikacjach konsolowych jest "suwak" ??

A tak do temtu to wiekszosc odpowiedzi mozesz znalezc na 4p.
Pewno wyjde na lamke ale szczerze mowiac nie wiem co to znaczy [ssShift] wiec chetnie tez sie dowiem.

tak jest (w trybie niepełnoekranowym- okienko) suwak taki jak np. w przegladarce internetowej po prawej stronie ;-)

0

To w aplikacjach konsolowych jest "suwak" ??

Jest. W systemach Windows NT, czyli popularnych Win 2000, XP i .NET Server okno wiersza poleceń posiada pasek przewijania, a samo w sobie zapamiętuje naprawdę pokaźną ilość linii. Dodakowo domyślnie działa w trybie 43 lub nawet 50 (nie jestem pewien) linii na ekranie (kiedy właczymy na pełny ekran).

:
:
:=

<>

To podstawowe symbole przyjęte w Pascalu. Więc tak - <font color="red">dwukropka </span>używasz kiedy przedstawiasz zmienną w bloku var, np.

JakisTest : String
  • sam widzisz, że znaczenie dwukropka wydaje się tu intuicyjne.
    <font color="red">:=</span> jest znakiem podstawienia (też własna nazwa ;p), możesz interpretować to jako "ma się równać", czyli przypisujesz zmiennej jakąś wartość. Np.
i := 10

lub JakisTekst := 'Ala ma kota, kot ma AIDS';

 
NIE MYL tego z <font color=red>=</span>, które jest symbolem PORÓWNANIA, np 
```delphi
if a = 10 then (...)

Możesz na przykład napisać

if JakaśFunkcja = 10 then

ale nie możesz {if} JakaśFunckja := 10

, ponieważ funkcja zwraca określony wynik i nie można przypisać do niej wartości.
<font color=red><></span> to również operator porównawczy. Znaczy on '<i>mniejsze lub większe</i>', czyli mówiąc po naszemu - <i>inne niż</i>.
Pytałeś o inne operatory - owszem, istnieją, również do porównań. Na przykład <font color=red>=></span> lub <font color=red>=<</span>. Znaczą one kolejno - <i>większy bądź równy</i> oraz <i>mniejszy bądź równy</i> (niemniejszy / niewiększy niż).
Istnieje także drugie znaczenie symbolu <font color=red>=</span>. Mianowicie przy definiowaniu stałych (blok <b>const</b>). Przez 
```delphi
JakasStala = 100

możesz określić stałą, tzn. wartość która we wszystkich miejscach programu będzie wstawiona zamiast tego identyfikatora, ale Twój program nie będzie mógł wpłynąć na jej zawartość. Dlatego nie używa się := ('ma się równać') tylko =, ponieważ nie jest wykonywana żadna operacja by ta stała miała tą wartość - jej nazwa jest zamieniana na jej wartośc już w momencie kompilacji.

[ssShift]
co to oznacza? czy klawisz CTRL oznaczymy [ssCtrl] czy [ccCtrl]

ssShift to jedna z wartości zmiennej Shift (typu TShiftState) podawanej jako parametr do procedury obsługującej zdarzenie OnKeyDown. Określa ona (zmienna), jakie klawisze specjalne były wciśnięte. Ponieważ jest to typ zbioru (tzn. ma np. 4 elementy i każdy z nich może być w tym momencie zawarty lub nie - możesz podać 1 z nich, a możesz wszystkie) - jego wartośc piszę się w nawiasach kwadratowych, oznaczających zbiór. Np kiedy idziesz do sklepu i przywiązujesz rower linką do czegokolwiek za przednie koło, możesz go opisać jak [RamaRoweru, KołoPrzednie, KołoTylne, Kierownica, Siodełko, LinkaZabezpieczająca]. Natomiast kiedy wychodzisz już ze sklepu rower opisujesz jako [KołoPrzednie, LinkaZabezpieczająca] :)
Klawisz Ctrl oznaczymy jako ssCtrl (nawias nie jest częscią nazwy!). Np. jeżeli wciśnięto Shift i Ctrl jednocześnie, zmienna Shift przybierze wartość [ssShift, ssCtrl].

co znaczy Trunc w delphi?
Result := Trunc(Result);</li> </ol>

Funkcja Trunc 'okraja' zmienną rzeczywistą (no wiesz, liczba z przecinkami) do liczby całkowitej. Zaokrągla w dół, tzn. wszystko po przecinku zostanie zignorowane.
Rada na przyszłość - w okienku kodu, w treści procedury napisz Trunc, wsadź kursor tekstowy do środka wyrazu i wciśnij F1 :)

A na pytania o prog. konsolowe nie odpowiem, bo takich nigdy nie pisałem.

0

A propos pytania 4.
W Turbo Pascalu, w module Crt, była zdefiniowana procedura o nazwie ClrScr, która czyściła ekran konsoli. W Delphi nie ma modułu Crt, ale możesz go ściągnąć z mojej strony (dział Downloads).
Aby użyć jakiejkolwiek procedury, czy funkcji z modułu Crt, w klauzuli uses musisz dołączyć ten moduł:
uses
Windows, SysUtils,......, Crt;

A propos pytania 5.
Aby zmienić kolor czcionki lub tła zastosuj odpowiednio: TextColor i TextBackground. Obie procedury są zdefiniowane w module Crt.
Przykład.
Zmiana koloru czcionki na czerwony:
TextColor(Red); // lub TextColor(4);

A jeśli chodzi o wielkość czcionek to niestety nie wiem.

0

Aby lepiej zrozumieć sam język Pascal / ObjectPascal polecam mój kurs Turbo Pascala : http://4programmers.net/view_file.html?id=692

Znajdziesz tam dokładne wyjaśnienia w/w operatorów i wiele innych rzeczy.

0

A jeśli chodzi o wielkość czcionek to niestety nie wiem.

Na dobrą sprawę pierwszy raz w życiu słyszę o czymś takim jak wielkość czcionki w trybie konsoli...

0

wystarczy w wpisać do aplikacji w jkimś miejscu 'cls'
a na resztę masz już odpowiedź nara

0

dotyczy 5 wystarczy w wpisać do aplikacji w jkimś miejscu 'cls'
a na resztę masz już odpowiedź nara</quote>

0

dotyczy 4 wystarczy wpisać do aplikacji w jkimś miejscu 'cls'
a na resztę masz już odpowiedź nara</quote></quote>

0

Tak, iki, zawsze zapominasz o najbardziej oczywistych rzeczach (i rozwiązaniach - przy debugowaniu (główny, nie mający końca etap tworzenia programu))...
Zpaomniałem o 2 operatorach porównania:
<font color="red"><</span>, czyli mniejszy od np. 2 < 4
<font color="red">></span>, czyli większy od, np. 4 > 2
O ile oczywiście ich już skądś nie znasz :D

0

Ikari: Obawiam się, że zapomniałeś o najbardziej podstawowym operatorze logicznym, jakim jest not :). Mamy jeszcze poza tym xor, shl, shr.

0

Zapomniałeś o and i or :)

0

w JediCodeLibrary jest unit jclConsole. polecam! naprawdę cuda da się wyprawiać z oknem konsolowym (justyfikacja textu, kolor, wielkość liter i cała masa innych przydatnych funkcji)

0

Kolor liter możesz zmieniać wpisując :

textcolor (numer od 0 do 15);

Ale to w Pascalu a w delphi to nie wiem.
W pascalu w trybie graficznym możesz jeszcze zmieniać czcionke wielkość i inne bajery.

Nie wiem czy o to ci chodziło bo nie przeczytałem tematu do końca (troche dłuuuuugi jak na moje oczy :-) )

Co do znaków to jest jeszcze:
=> : większy równy
<= : mniejszy równy
<> : inny

0

Co do znaków to jest jeszcze:
(...)

Podałem mu to w 1 odpowiedzi (tej długiej), czytaj uważniej...

0

Pochwalony! Odpowiednik ClrScr(Pascala (i Clr MDSOS'a :P )):

procedure ClearConsole;
var
H: THandle;
Zapisano, Rozmiar: DWord;
Koordynaty: TCoord;
CSBI: TConsoleScreenBufferInfo;
begin
Koordynaty.X := 0;
Koordynaty.Y := 0;
H := GetSTDHandle(STD_OUTPUT_HANDLE); //pobranie uchwytu konsoli
Win32Check(GetConsoleScreenBufferInfo(H, CSBI)); //pobranie informacji na temat wyświetlania w konsoli
Rozmiar := CSBI.dwSize.X * CSBI.dwSize.Y;
Win32Check(FillConsoleOutputCharacter(H, ' ', Rozmiar, Koordynaty, Zapisano)); //wypełnij konsole "spacjami", a niech one będą wpisywane od punktu X:0 Y:0 (koordynaty), do ostatniego punktu
Win32Check(SetConsoleCursorPosition(H, Koordynaty)); //ustaw pozycję kursorka na 0 0
end;

Jak byś czegoś nie kumał z tego, napisz na GG. Acha, co do innych przydatnych procków do aplikacji konsolowych, to znajdziesz je za kilka dni na moim FAQ :P na my page :), http://strony.wp.pl/wp/past.skriptum/delphi/faq.htm

0

Po pierwsze, to nie => tylko >=... To jest różnica...
Po drugie nie lepiej zacząć nauki języka programowania od książki, w której jest napisane jak coś zrobić? Nie czytałem co prawda książki Adama Boducha "Delphi - ćwiczenia praktyczne", ale po samym tytule mogę się domyślić, że jest to coś, co pomoże rozwinąć swe umiejętności już umiejącym programować i daruj, że to mówię, ale pytanie z tymi operatorami jest na zbyt niskim poziomie jak na mój gust... Nie widziałem książki do nauki języka programowania (a widziałem już ich dużo), w której by to nie było wyjaśnione.

0

Po pierwsze, to nie => tylko >=... To jest różnica...
Po drugie nie lepiej zacząć nauki języka programowania od książki, w której jest napisane jak coś zrobić? Nie czytałem co prawda książki Adama Boducha "Delphi - ćwiczenia praktyczne", ale po samym tytule mogę się domyślić, że jest to coś, co pomoże rozwinąć swe umiejętności już umiejącym programować i daruj, że to mówię, ale pytanie z tymi operatorami jest na zbyt niskim poziomie jak na mój gust... Nie widziałem książki do nauki języka programowania (a widziałem już ich dużo), w której by to nie było wyjaśnione.

jak to sie mówi: pozory mylą! i to bardzo, bo ćwiczeni a praktyczne sa bardzo dobre na poczatek nauki. jest tam co nieco wyjasnione (ale wiadomo tylko kilka podstawowych rzeczy). ksiazka jest napisana dosc przystepnm jezykiem dla poczatkujacych.

0

Po pierwsze, to nie => tylko >=... To jest różnica...

Tak, racja, <font color="red">>=</span> oraz <font color="red"><=</span>. Pamiętałem tylko, że jedno z nich to 'strzałka', a drugie nie, ale za każdym razem popełniam ten sam błąd i się mylę...

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