Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Radar28

kompilator fpc 1.0.10 do Pascala

Rekomendowane odpowiedzi

Problem wygląda następująco:

Aby uogólnieć pewne funkcje w programie (tym samym skrócić go znacznie) potrzebuję funkcji GetXY (lub jakiejś o analogicznym działaniu) - bez tego będę musiał ostro kombinować. Problem polega na tym, że o ile w znalezionych dokumentacjach kompilatora fpc widnieje funkcja GetXY w module crt, ale kompilator tejże funkcji w ogóle nie rozpoznaje! Podobnie z funkcjami GetX i GetY. Jeśli by ktoś wiedział jak można ominąć ten problem, to byłbym bardzo wdzięczny. Jakbym pisał pod Windowsy, nie byłoby problemu :kwasny: (jakoś nie mogę polubić linuksa, choć TeX mnie np. pozytywnie zadziwił :) - choć TeX jest właściwie niezależny od platformy, więc się nie liczy ;) )

 

Kompilator na serwerze to jak w temacie fpc 1.0.10

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hmm... gdyby to był mój własny komputer, to mógłbym dograć odpowiednie dodatki, ale ja muszę niestety pracować na serwerze uczelnianym - raczej muszę się borykać z tym co mam :kwasny:

 

Niestety nie mamy nCrt - sprawdziłem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

dobra, za jakies 20 minut bedzie sciagniete i skomplikowane to powiem czy da sie

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
dobra, za jakies 20 minut bedzie sciagniete i skomplikowane to powiem czy da sie

Że też tobie się chce :D

 

:beer:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

uses graph ;

 

getx, gety - zwraca polozenie w x i y (integer), oczywiscie tryb graficzny

 

 

wyglada na to, ze crt wystepuje pelny w wersji dos/windows natomiast pod linuksem nie ma dostepu do getxy

 

moze http://community.freepascal.org:10000/bboard/ cos podpowie ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
uses graph ;

 

getx, gety - zwraca polozenie w x i y (integer), oczywiscie tryb graficzny

wyglada na to, ze crt wystepuje pelny w wersji dos/windows natomiast pod linuksem nie ma dostepu do getxy

 

moze http://community.freepascal.org:10000/bboard/ cos podpowie ?

Heh, modułu graph próbowałem. Program się kompiluje, ale potem przy uruchamianiu się wykwasza dość konkretnie, bo nie może się do jakichś bibliotek dostać. Forum przejrzę, może coś znajdę na temat. Najwyżej znajdę jakieś mniej eleganckie obejście problemu. Tak czy siak dzięki za poświęcony czas i takie tam :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a koniecznie musisz pobierac zawartosc spod podanego miejsca ?

dopuszczalne rozwiazanie:

tab : array[ 0 .. 79, 0 .. 24 ] of char ;

podmienic writeln i write na funkcje ktore beda modyfikowac tab, showall ktory przepisze zawartosc tabeli na ekran

(uwaga, 80.25 powoduje przy zwyklym crt przejscie do nastepnej linii, pod winda napisalem swoj ktory wylaczal to zachowanie)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mój program to generalnie relacyjna baza danych, a uogólnić chciałem funkcję wczytywania, żeby uprościć kod programu.

 

Cały wic polega na tym, że właśnie nie korzystam w sposób bepośredni z funkcji read lub readln. Zamiast ze stringów (nie tych co to je nosił Pinokio ;) ) korzystam z tablic znaków (na stringach raczej nie napisałbym dobrych procedur wyszukujących np. tytułów na literę "a" - przynajmniej nie w Pascalu). W tej sytuacji sczytuję wpisywane wyrażenia znak po znaku. Jest oczywiście uwzględniona możliwość kasowania znaków - tu właśnie muszę wiedzieć gdzie tak właściwie trzeba przesunąć kursor (usunięcie znaku z tablicy jest raczej oczywiste i proste). W tej sytuacji użycie GetXY narzuca się samo. Mam już przygotowany plan awaryjny - po prostu do funkcji wczytywania dodam dwa parametry od położenia na ekranie, ale to nie wygląda aż tak elegancko. W użyciu nie jest to na szczęście bardzo uciążliwe.

 

Przy bazie danych często trzeba coś wczytać i to w różnych miejscach i sytuacjach, więc wypadałoby raczej porządnie napisać procedurę wczytywania różnych rzeczy.

 

Tak czy siak dziękuje za poświęcony cenny czas :D

 

W sumie miewałem dziwniejsze problemy wcześniej, ale udało mi się je jakoś obejść:

np. czasem program omijał instrukcję read (lub readln - czasem mogłem ich użyć) nawet jeśli wykonywałem program krok po kroku w Borland Pascalu - nigdy się chyba nie dowiem dlaczego :E W końcu zrobiłem tak, że powtarzał tak długo polecenie read, aż zwrócił niezerowy wynik - o dziwo działa gładko i bez zacięć ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wherex/wherey sprawdzales? jest w CRT (przynajmniej w ftp dla dosa/windowsa).

 

A tu jeszcze kawalek mojej procedury do wczytywania/edycji ciagow. Pisane pod TP6.0

 

PROCEDURE CzytajStr1 (Var Nazwa:String; Len:Byte; Var OK:Boolean; Edycja:Boolean);
VAR
 X,Y,I : Byte;
 Ch    : Char;
 Wpis  : String;
BEGIN
 CurOn;
 If Edycja Then
   Wpis:=Nazwa
 Else
   Wpis:='';
 GotoXY(1+Length(Wpis),1);
 OK:=True;
 Repeat
   Ch:=ReadKey;
   X:=WhereX;
   Y:=WhereY;
   If (Ch=Back) And (Length(Wpis)>0) Then
     BEGIN
       GotoXY(X-1,Y);
       Write(' ');
       GotoXY(X-1,Y);
       I:=Ord(Wpis[0]);
       Dec(I);
       Wpis[0]:=Chr(I)
     END;
   If (Ch in Ch30) And (Length(Wpis)<Len) Then
     BEGIN
       Wpis:=Wpis+Ch;
       Write(Ch)
     END;
 Until (Ch=Enter) Or (Ch=Esc);
 If Ch=Enter Then Nazwa:=Wpis
   Else OK:=False;
 CurOff
END;

 

Jakbys chcial to moge udostepnic cala baze (obsluga plikow, listy na wskaznikach, wyszukiwanie w bazie, wyswietlanie w tabelce itp). Pisane tak jak powyzsze, w TP6

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Jakbys chcial to moge udostepnic cala baze (obsluga plikow, listy na wskaznikach, wyszukiwanie w bazie, wyswietlanie w tabelce itp). Pisane tak jak powyzsze, w TP6

Ale ja tą bazę już mam napisaną :D Chodziło tylko o uładzenie kodu programu (i pozbycie się tych fragmentów, które nie działają pod linuxem - np. obsługa myszki). Już w tej chwili z ponad 1000 linii udało mi się zrobić 750. WhereX/WhereY nie sprawdzałem, więc może warto będzie spróbować.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...