Moje prace z XHarbour

Ze strony www.xharbour.com ściągnąłem wersję demonstracyjną Visual Xharbour. Zacząłem testy próbnych programów z podkatalogu samples.
System kopiuje te programy do katalogu Moje Dokumenty\Visual xHarbour Projects .
Ujawniły sie błędy podczas testów. System uporczywie psuje plik XDB.rc z podkatalogu resources. Wyskakują komunikaty błędu  Number expected i Begin expected , i trzeba ten plik nadpisywać oryginalnym plikiem ze źródeł.
9 września 2008. W programie xdb wersja 3.0 poprawiłem błąd działania przy funkcji Apppend. Występowało przesunięcie pól o 1  i przy ostatnim polu występował  błąd wykonania z przekroczenia tablicy.
Wystąpił następny błąd przy edycji pola numerycznego, który usunąłem wprowadzając konwersję przy pomocy funkcji val().
Ujawniła się dwuznaczność w definicji pola numerycznego przy pomocy Visual Foxpro literą "I" ,podczas gdy program XDB wstawia oznaczenie literą "N".
Uzupełniłem program o możliwość rozpoznania także oznaczenia "I"  jako  taki sam typ numeryczny jak dla litery "N".
Poprawiony plik źródłowy można ściągnąć stąd: xdb3_1.zip

10 września 2008. W programie otwierającym bazę danych instrukcja use podczas testowania z poziomu kompilatora program nie znajduje bazy danych, natomiast przy testowaniu w oknie komend program znajduje bazę danych umieszczoną w swoim katalogu. 
12 września 2008. Program XBuilder aktualizuje nazwy procedur po zmianie nazwy przycisku (obiekt button). Ale się myli i zmienia nazwę przycisku we wszystkich formach ,w których wystąpiła ta nazwa. I potem jest błąd kompilacji. Brak procedury ONClick w drugiej formie.
Utworzyłem prosty program skarb do pracy z tabelą dochodów z najmu. Przegląda on określoną tabelę z możliwością dopisywania, edycji, kasowania i przywracania rekordów.  zródła:skarb.zip .
13 września 2008
. Okazało się, że XBuilder wyrzuca na błąd AMBIGUOUS  REFERENCE nazwę pola w instrukcji poprawnej w starym Clipperze.
Trzeba użyć postaci nazwa_Aliasu->Nazwa_pola , to błąd kompilacji zniknie..
Przykład kodu:  USE Customers alias klienci
INDEX ON Upper( klienci->LastName) TO Cust01
15 września 2008
. Utworzyłem drugi program do edycji tabeli z fakturami kosztów uzyskania przychodów. Program edytuje dwie tabele rachunki i pozycje rachunków. Źródła: Skarb2.zip 
17 września 2008. Udało mi sie przy pomocy XHarbour Project Builder (demo) skompilować program wielonakładkowy Solid. Program dał się uruchomić. Były drobne różnice odnośnie wymagań językowych.
W plikach źródłowych występują dyrektywy PUBLIC. Kompilator zgłaszał błędy ,że są one na zewnątrz procedur. Aby te błędy zlikwidować, wstawiałem na początku plików źródłowych deklaracje Procedure z inną nazwą niż główna część nazwy pliku źródłowego.
Zmieniłem zapis file('&baza'+'.mem') na file(baza+'.mem'), ponieważ w nowym programie  wynikowym źle działała instrukcja if file('&baza'+'.mem') i niesłusznie sygnalizowała brak pliku. Utworzony plik [projektu solid.exe.xbp
18 września 2008. Podczas prac nad przeróbką na Clipper XHarbour (przy pomocy XHarbour Project Builder demo) swojej aplikacji Finanse stwierdziłem, że Instrukcja SET FORMAT TO nazwa_procedury nie jest obsługiwana w XHarbour. Trzeba przerobić kod  z jej użyciem.
20 września 2008.
Wykonałem testy na obsługę drukowania w Clipperze Xharbour. Programy utworzyłem z kodu przykładowego z manuala.
Funkcja GetPrinters() zwraca tablicę z nazwami drukarek dostępnych w systemie.
Funkcja GetDefaultPrinter() zwraca kod domyślnej drukarki. Te nazwy można podstawiać do instrukcji Set Printer To, aby wybrać drukarkę do drukowania.
Archiwum kodów tych programów drukarz.zip.
22 września 2008.
Wykonałem testy kilku programów z manuala do obsługi myszy.
W manualu "xHarbour Language Reference Guide.chm" zadałem zapytanie Mouse i skompilowałem przykłady kodów dla kilku tematów inkey(), lastkey(), hitcode, mrow(), menu, SET EVENTMASK, achoice,dbedit,TBrowse,TopBarMenu. Pliki źródłowe umieściłem  w archiwum mysz.zip.
Dla programu mysz_menu1.prg wprowadziłem przed wywołaniem instrukcji MENU TO instrukcje SET EVENTMASK to INKEY_ALL.
Spowodowało to reagowanie instrukcji MENU TO na kliknięcie myszy. Ponieważ powstawało zaburzenie działania instrukcji BROWSE , to w obsłudze menu wyłączyłem działanie myszy przez instrukcję: SET EVENTMASK TO INKEY_KEYBOARD.
Podobnie aktywowałem mysz w programie mysz_achoice1.prg. Ale tam nie było zaburzeń instrukcji memoedit, więc nie wyłączam myszy w funkcji obsługi instrukcji achoice.
25 września 2008. Doprowadziłem do końca kompilację przy pomocy XHArbour Project Builder  mojego wielonakładkowego programu Finanse.
Podczas linkowania wyszły dwie sprawy: podprogramy ze starszej biblioteki IDL -linker nie znajdował ich w bibliotece.
Makroinstrukcja #translate d_kwoty przy podstawieniu tylko pierwszych czterech z sześciu parametrów spowodowała błąd linkowania  tej funkcji i program finanse.exe nie został utworzony.
W przypadku Clippera 5.2 jest też  błąd linkowania, ale program finanse.exe został utworzony i może źle działać.
26 września 2008. Utworzyłem symulację menu w programie mysz_inkey2.prg.
Wmontowałem instrukcje SET EVENTMASK to INKEY_ALL w programach wielonakładkowych Solid i Finansedo instrukcji MENU TO.
Aby nie zaburzać innych funkcji wyłączam tę opcję po wybraniu pozycji Menu myszą przez instrukcję SET EVENTMASK TO INKEY_KEYBOARD.
27 września 2008.
Skompilowałem pod XHarbour program Sklep. Tylko szukam zamienników funkcji z biblioteki IDL.
Podaję tabelę zamienników.

funkcja IDL funkcja XHArbour
F_Rename() FRename( <cOldFile>, <cNewFile> ) --> nSuccess
F_Write FWrite( <nFileHandle>, ;
        <cBuffer>    , ;
       [<nBytes>]    , ;
       [<nOffset>]     ) --> nBytesWritten
F_PROT ,F()_Unprot() SetFAttr( <cFileName>, [<nAttributes>] ) --> nErrorCode
F_COUNT ADir( [<cFileMask>], ;
      [<aName>]    , ;
      [<aSize>]    , ;
      [<aDate>]    , ;
      [<aTime>]    , ;
      [<aAttr>]      ) --> nDirEnries
cur_drive() CurDrive( [<cNewDrive>] ) --> cOldDrive
chdir() DirChange( <cDirectory> ) --> nOSError
mkdir MakeDir( <cDirectory> ) --> nOSError
Clock() ShowTime( [<nRow>]     , ;
          [<nCol>]     , ;
          [<lHideSecs>], ;
          [<cColor>]   , ;
          [<l12h>]     , ;
          [<lAmPm>]      ) --> cNull

Będzie z tym więcej roboty. Trzeba szukać w manualu File Functions.
1 października 2008. Przekompilowałem program wielonakładkowy wpr_fak.exe do faktur wewnętrznych.
4 października 2008. W programie Finanse wprowadziłem obsługę myszy dla instrukcji menu i achoice. Dla ostrożności wyłączam mysz po zakończeniu tej instrukcji.
Wprowadziłem też składowanie danych z bazy Access do formatu DBF.
5 października 2008. W moim pliku definicji dla PSPAD FOXPRO.def wprowadziłem definicje dla instrukcji obsługi myszy w Clipperze. Patrz:Mój Pspad

Linki

http://xharbour.republika.pl/ http://tech.groups.yahoo.com/group/harbour-pl/ http://www.xharbour.org/ http://www.harbour.pl.eu.org/clipper/clipper_mini_faq.html
http://harbour.rox.pl/ http://en.wikipedia.org/wiki/XHarbour
http://www.oohg.org/ http://www.fivetechsoft.com/english/index.html
http://www.olszynka.pl/harbour/hbdoc/index.htm http://www.xharbour.com/
http://www.fivewin.info/index.php http://www.fivetechsoft.com/english/index.html
http://www.pctoledo.com.br/forum/viewtopic.php?f=13&t=7801&view=previous http://www.bestnet.ru/club/phpBB/viewtopic.php?t=7442

Data aktualizacji strony: 2009-03-22

 

Licznik odwiedzin