Dokumentacja do Pascala

0

Szukałem dokumentacji do Pascala i nie znalazłem za dużo. Pojawia się np dokumentacja Free Pascal Compilator lub Turbo Pascal ale nie samego języka.
Jak potrzebowałem np dokumentacji Javy to miałem bezpośrednią dokumentację języka a nie kompilatorów, jak np Eclipse. W Pascalu takiej nie ma?
Ta która jest dostępna od FPC (freepascal.org) jest nawet okey, ale ona jest też pod obiektowego pascala i często są tam podane komendy z Delphi, które w Pascalu nie działają. np. StrToInt(string, integer). FPC nie przyjmuje tego, a później na jakiejś stronce znalazłem informację, że w Pascalu odpowiednikiem funkcji StrToInt() z Delphi jest Val().
A więc może znajdzie się jakaś dobra dusza i powie jak z tego korzystać ewentualnie poda źródło do jakiejś innej dokumentacji tylko od Pascala?

0

StrToInt(string, integer). FPC nie przyjmuje tego

Bzdura; moduł SysUtils.
Tutaj masz opis języka - http://www.standardpascal.org/standards.html - ale dokumentacją jako-tako tego bym nie nazwał.
Oprócz tej na stronie FPC i na stronie Embarcadero (pierwszy lepszy artykuł, np.http://docwiki.embarcadero.com/RADStudio/en/Internal_Data_Formats) masz jeszcze zwykłego helpa od Delphi (klawisz "F1" :P).

0

No dokładnie, jest z modułu sysutils, ale nie działa u mnie. Sprawdzałem u siebie na linuxie i na uczelni na widowsie. Na obu używałem kompilatora FPC (na linuxie to jest ten dostępny w ubuntowskim markecie SDK metapackage, a na windowsie w wersji jak dobrze pamiętam 2.6.0). Co prawda nie wyrzucało błędu przy kompilacji ale wywalało krzaki w czasie działania programu, gdy dochodziło do miejsca gdzie miało przekonwertować string na int.
Delphi to obiektowy Pascal. Ale nie ma żadnych różnic między nimi? Składnia, funkcje, moduły? Pisząc w Pascalu mogę korzystać z dokumentacji / helpa Delphi i będzie wszystko powinno działać?

1

Może nie dodałeś {$H+} i dlatego wyskakiwały Ci "krzaczki".


Delphi to obiektowy Pascal. Ale nie ma żadnych różnic między nimi? Składnia, funkcje, moduły? Pisząc w Pascalu mogę korzystać z dokumentacji / helpa Delphi i będzie wszystko powinno działać?

Dodaj {$MODE DELPHI}, a praktycznie różnic nie będzie (nie licząc jakichś stricte internalsów kompilatora, ale o ile nie korzystasz z czarnej magii, wszystko powinno być dobrze :]).

1

W Pascalu takiej nie ma?
W zasadzie nie.
Istnieje co prawda standard ISO Pascal, ale dwa najpopularniejsze kompilatory Pascala i Object Pascala (Delphi i Free Pascal Compiler) nie bardzo się go trzymają.
Podobnie zresztą było z Turbo Pascalem - z którego te dwa się wywodzą. Łącznie nazywa się to "Borland dialect".

Istnieje co prawda kompilator zgodny ze standardem ISO - GNU Pascal Compiler, chociaż już nie rozwijany, i jest raczej niszową ciekawostką (w obrębie i tak niszowego języka jakim jest Pascal...)

Z tych powodów „dokumentacja języka” jest w zasadzie bezużyteczna.
Dokumentacja FPC jest z resztą dość wyczerpująca.

0

{$H+} nie dodałem - nie wiem co to jest.
Dodałem natomiast {$mode objfpc}, ponieważ tak było właśnie w przykładzie dokumentacji fpc. {$mode delphi} to jeszcze coś innego jest?

1

{$H+} włącza Ansistringi, które domyślnie są w FPC wyłączone.
Z modyfikatorów MODE masz: http://www.freepascal.org/docs-html/user/userse33.html

0

Dziś aktualizowałem ubuntu z wersji 12.04 lts do 12.10 uts i posypał mi się cały system. Właśnie mam świeżą kopię 12.04 + świeżo zainstalowany FPC z marketu i krzaków nie ma, a wkodzie nic nie zmieniałem (choć i tak nie działa prawidło jeszcze). Na uczelni też były krzaki, a więc sam już nie wiem czy to problem z kompilatorem jest czy z kodem.
Tak samo było z case. Na obu komputerach (różnych) była zainstalowana taka sama wersja FPC. Na jednym w case mogłem wpisywać cyfry lub znaki/litery w ciapkach, natomiast na drugim gdy wpisywano cyfry to było wszystko ok, a gdy wpisywano znaki/litery w ciapkach to kompilator nie przyjmował tego.
To możliwe jest aby tak często kompilator instalował się źle i strzelał fochy na każdym kroku? :)

p.s. Wkleić tutaj kod czy założyć do tego nowy temat, żebyście mogli zobaczyć w czym jest problem?

2

Generalnie po usilnie polecę przerzucenie się na Lazarusa - tam masz {$mode objfpc}{$H+} domyślnie.

Dodałem natomiast {$mode objfpc}, ponieważ tak było właśnie w przykładzie dokumentacji fpc. {$mode delphi} to jeszcze coś innego jest?

W google tego nie ma prawda, tylko trzeba szukać w kodzie kompilatora...

No dokładnie, jest z modułu sysutils, ale nie działa u mnie. Sprawdzałem u siebie na linuxie i na uczelni na widowsie. Na obu używałem kompilatora FPC (na linuxie to jest ten dostępny w ubuntowskim markecie SDK metapackage, a na windowsie w wersji jak dobrze pamiętam 2.6.0). Co prawda nie wyrzucało błędu przy kompilacji ale wywalało krzaki w czasie działania programu, gdy dochodziło do miejsca gdzie miało przekonwertować string na int.

To nigdy nie jest wina programisty, to zawsze jest wina kompilatora. Dziwne że my nie mamy podobnych problemów.

Może nie dodałeś {$H+} i dlatego wyskakiwały Ci "krzaczki".

Bez dodania tego jako ansistringów też powinno działać.

Delphi to obiektowy Pascal. Ale nie ma żadnych różnic między nimi? Składnia, funkcje, moduły? Pisząc w Pascalu mogę korzystać z dokumentacji / helpa Delphi i będzie wszystko powinno działać?

Skoro używasz FPC to on wspiera tryb Delphi, z którym jest w 95% zgodnym, ale ma też własny objfpc, który osobiście uważam za nieco bardziej czytelny, ale większych zmian nie ma.

{$H+} włącza Ansistringi, które domyślnie są w FPC wyłączone.

Koledze zapewne chodziło o to że {$H+} ustawia string=ansistring a nie domyślne string=shortstring. Nawet bez H można ich używać.

Generalnie to Pascal i Delphi to tak jak C i C++, niby się coś zmienia ale na dobrą sprawę to nie. Delphi ma być niby bardziej rozwinięte niż Pascal, aczkolwiek nazwałbym to raczej dialektem Pascala, gdyż czerpie praktycznie wszystko z niego. FPC wspiera i Pascal, i Delphi i inne dialekty w stylu Mac-Pascal itd. które mają pomniejsze różnice. Natywnym dla FPC jest tryb {$mode objfpc}.
Jeżeli szukasz dobrej dokumentacji czy to Pascala czy to Delphi, to dokumentacja FPC jest idealnym miejscem. Nie ma tam co prawda tutorialów, ale są przykłady i dokładne opisy jak co czyta kompilator.

Ta która jest dostępna od FPC (freepascal.org) jest nawet okey, ale ona jest też pod obiektowego pascala i często są tam podane komendy z Delphi, które w Pascalu nie działają. np. StrToInt(string, integer). FPC nie przyjmuje tego, a później na jakiejś stronce znalazłem informację, że w Pascalu odpowiednikiem funkcji StrToInt() z Delphi jest Val().

Bo nie dodałeś modułu to znaczy że nie ma... Nawet w rogu zawsze masz napisane do jakiego modułu odnosi się dokumentacja.

0

Oczywiście, że dodałem uses sysutils na samym początku. Skoro szukałem funkcji w dokumentacji i znalazłem ją w module sysutils to chyba oczywiste, że należało go dodać.

A co do Lazarusa to zainstalowałem go sobie już wcześniej, ale jakoś nie do końca go ogarnąłem. Jak będzie więcej czasu to posiedzę i popatrzę jak on dokładnie działa. Chciałem na szybko utworzyć zwykły plik pascalowy a nie projekty do tworzenia okienek i nie mogłem skompilować zwykłego hello world. Środowisko na pewno jest bardzo fajne i mocno przypomina Delphi, ale nie miałem czasu na zapoznanie się z nim. Jak będzie czas to na pewno usiądę do niego na dłużej.

1

A co do Lazarusa to zainstalowałem go sobie już wcześniej, ale jakoś nie do końca go ogarnąłem. Jak będzie więcej czasu to posiedzę i popatrzę jak on dokładnie działa. Chciałem na szybko utworzyć zwykły plik pascalowy a nie projekty do tworzenia okienek i nie mogłem skompilować zwykłego hello world.

Projekt->Nowy Projekt->Program. W Lazarusie 1.0 jest chyba bug przez który domyślnie nie ma konsolki i writeln daje błąd 10X, trzeba odznaczyć switch -WG w opcjach projektu.

Oczywiście, że dodałem uses sysutils na samym początku. Skoro szukałem funkcji w dokumentacji i znalazłem ją w module sysutils to chyba oczywiste, że należało go dodać.

To z czym masz problem. Pozwolisz że zacytuję?

często są tam podane komendy z Delphi, które w Pascalu nie działają. np. StrToInt(string, integer). FPC nie przyjmuje tego

FPC nie przyjmuje tego? No bardzo ciekawe czy nie przypadkiem dlatego bo nie dodałeś modułu...

0

kaazik, nie doszukuj się podstępów. Pisze jak było, przychodzę do Was po pomoc a nie po to, żeby ściemniać. Bo niby co to miałoby na celu...

Plik kompilował się bez błędów natomiast gdy w czasie działania programu dochodziło do momentu gdzie powinien przeliczyć stringi, które były 2 cyfrowymi liczbami, na Integer to wypisywał info, że nie może ich przekonwertować na Inta i jakieś takie dziwne ciągi cyfr, po czym oczywiście reszta programu się już nie wykonywała. Aktualnie tego problemu nie ma po reinstalacji systemu i kompilatora. W kodzie nie ruszałem nic, a więc przepuszczam, że kompilator był źle zainstalowany.
Na uczelnianym laptopie było to samo i był ten problem z case o którym pisałem wcześniej. Case przyjmowało tylko cyfry w wyborach a nie przyjmowało znaków w ciapkach. Jak np pisałem 1:, 2:, 3: to wszystko działało, a gdy zmieniałam na '+', '-', 'a', 'b' to plik się nie kompilował już, zwracał błędy w tych miejscach. Na laptopie nauczyciela ten sam przeniesiony plik kompilował się i działał prawidłowo. Tam nie przeinstalowywałem kompilatora, a więc nie wiem czy to by przypadkiem nie pomogło.

W markecie Ubuntu mam Lazarusa w wersji 0.9.30.2. Ta wersja jest ok czy szukać w Internecie wersji 1.0?

0

kaazik, nie doszukuj się podstępów. Pisze jak było, przychodzę do Was po pomoc a nie po to, żeby ściemniać. Bo niby co to miałoby na celu...

Ja się usiłuję doszukać prawdy...

Plik kompilował się bez błędów natomiast gdy w czasie działania programu dochodziło do momentu gdzie powinien przeliczyć stringi, które były 2 cyfrowymi liczbami, na Integer to wypisywał info, że nie może ich przekonwertować na Inta i jakieś takie dziwne ciągi cyfr, po czym oczywiście reszta programu się już nie wykonywała.

Jednym słowem dostałeś wyjątek bo nie idzie konwertować tego co mu tam wpuściłeś.

W kodzie nie ruszałem nic, a więc przepuszczam, że kompilator był źle zainstalowany.

Śmiem twierdzić, że to może być tak jak z tym twoim magicznym modułem który jest ale nie ma. ;)
Ale bez dokładniejszych danych możemy gdybać.

a nie przyjmowało znaków w ciapkach.

Apostrofy?

Na laptopie nauczyciela ten sam przeniesiony plik kompilował się i działał prawidłowo.

Albo nowy FPC albo inny kompilator?...

W markecie Ubuntu mam Lazarusa w wersji 0.9.30.2. Ta wersja jest ok czy szukać w Internecie wersji 1.0?

Market Ubuntu... lOl. Najnowsza wersja już jest post-1.0 i możesz ją znaleźć np. tutaj www.lazarus.freepascal.org . A co do wersji, to jeżeli nie piszesz nic super to wystarczy 0.9.30.2 ale jeżeli chcesz mieć mniej problemów to polecę post-1.0 .

0
kaazik napisał(a):

Jednym słowem dostałeś wyjątek bo nie idzie konwertować tego co mu tam wpuściłeś.

Opisałem ten problem w tym temacie -> Zła konwersja ze stringa na integer Jak masz czas to zerknij tam. Wydaje mi się, że string '23' powinien się przekonwertować na integer bez żadnego problemu.

1
Vendetta napisał(a):

No dokładnie, jest z modułu sysutils, ale nie działa u mnie. Sprawdzałem u siebie na linuxie i na uczelni na widowsie. Na obu używałem kompilatora FPC (na linuxie to jest ten dostępny w ubuntowskim markecie SDK metapackage, a na windowsie w wersji jak dobrze pamiętam 2.6.0). Co prawda nie wyrzucało błędu przy kompilacji ale wywalało krzaki w czasie działania programu, gdy dochodziło do miejsca gdzie miało przekonwertować string na int.

Jeżeli funkcja nie chce przekonwertować string na int to oznacza tylko tyle, że ów string zawiera znaki, które nie mogą być przekonwertowane na liczbę.
Wystarczająco dobra na początek jest dokumentacja Pascala/Delphi na forum.

0

Teraz już to wiem. Jest to dobra nauka na przyszłość. Nie spodziewałem się, że string może zawierać więcej znaków niż wydrukuje na ekranie.
A co do dokumentacji z forum to właśnie ją widziałem i w wolnym czasie na pewno dokładnie ją przeczytam. Dzięki.

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