RSS
czwartek, 28 listopada 2013
PowerBuilder i „drukowanie” do PDF z wykorzystaniem GhostScript-a

 

PowerBuilder od jakiegoś już czasu oferuje „drukowanie” / zapisywanie obiektów dataindow jako PDF:

 

ll_rc = dw_report.saveas(ls_filename, PDF!, false)


Aby powyższa komenda działała poprawnie musisz zainstalować GhostScript w dwóch miejscach:

 

C:\Program Files (x86)\Sybase\gs
C:\Program Files (x86)\Sybase\Shared\PowerBuilder\gs

Tak naprawdę chodzi tu o umieszczenie w wyżej wymienionych folderach plików runtime GhostScript-a, przy czym lokalizacja druga wymagana jest jedynie w przypadku instalacji i wykorzystywania na danej maszynie środowiska programistycznego PowerBuilder-a.

My wykorzystujemy GhostScript w wersji 8.7.1. Nie jest to najnowsza dostępna wersja, ale działa ona bez problemów z PowerBuilder-em 11/12/12.5 na systemach Windows XP oraz Windows 7. Znajdziecie ją w archiwach GhostScript-a: http://downloads.ghostscript.com/public/.


poniedziałek, 25 listopada 2013
PowerBuilder i znaki specjalne

 

Niedawno kolega spytał mnie, co w kodzie PowerBuilder oznaczają znaki ~t. Zaskoczył mnie nieco, ponieważ myślałem, że każdy kto programuje w PowerBuilderze kombinację tą i inne zna.

 

Wszystkie, które znam i z których korzystam poniżej:

~t  - znak tabulacji,
~r - powrót karetki,
~n - znak nowej linii,
~b - znak backspace,
~' - znak apostrofu w ciągu ograniczonym apostrofami,
~" - cudzysłów w ciągu ograniczonym cudzysłowami,
~~ znak tyldy.

Nieco mniej popularne to:

& - umożliwiający rozbicie długiej komendy na kilka linii,

; - umożliwiający umieszczenie kilku komend w jednej linii. Sam nigdy nie zwróciłem na to uwagi, ale koledzy powiedzieli mi, że zdecydowanie go nadużywam. Nie  umieszczam zwykle kilku komend w jednej linii, ale ponieważ programuje w językach, gdzie średnik jest separatorem poleceń, dodaję go na końcu chyba już odruchowo. Kompilator nie protestuje więc nie zwracam na to uwagi :)

PowerBuilder udostępnia jeszcze inne, mniej popularne i nieużywane przeze mnie kombinacje takie jak: ~v, ~f, ~h##, ~o###, ~###. Nie będę tu ich opisywał, zainteresowani mogą zajrzeć do pomocy PB :).




niedziela, 24 listopada 2013
PowerBuilder żyje?

 

Możliwe, iż jest jeszcze nadzieja dla PowerBuilder-a. 3 Grudnia 2013 (żeby nie było żadnych wątpliwości) na spotkaniu użytkowników PB - PowerBuilder User Group Germany - PBUGG przedstawiciele SAP* mają zaprezentować oficjalną mapę drogową PowerBuilder-a (PowerBuilder Roadmap). Jak tylko będę miał szczegółowe informacje z PBUGG opublikuję je.



*Robyn Chan Senior Vice President, Head of Mobile Platform, SAP AG oraz Michael Redford PMP Business Information Technology, Products & Innovation, SAP AG


środa, 13 listopada 2013
PowerBuilder i automatyczne numerowanie / wersjonowanie build-a

 

Zarówno problem jak i zaprezentowane rozwiązanie to nic nowego, znalazłem je gdzieś kiedyś na Google Groups i wielokrotnie wykorzystywałem w przeszłości. Nie udało mi się niestety ponownie znaleźć linka źródłowego.

 

Przedstawione podejście umożliwi nam automatyczne wersjonowanie buildów naszej aplikacji.  Przykład poniższy bazuje i zmienia jedynie numer builda, ale możemy go rozbudować zgodnie z naszymi wymaganiami.

 

Kroki konieczne do implementacji to:

 1.   Utworzenie nowego obiektu NVO „non visual” (klasy), w przykładzie będzie to n_buildno. W zależności od potrzeb obiekt nasz możemy zdefiniować, jako „statyczny” - AutoInstantiate, bądź nie.
 2.   Dodanie do obiektu dwóch zmiennych „instancyjnych” (instance variables):

 

integer II_BUILD_NUMBER = ProfileInt("build.ini", "version_control", "build", 1)
PRIVATE:
integer II_DUMMY = SetProfileString("build.ini", "version_control", "build", &
                                    string(ProfileInt ("build.ini", "version_control", "build", 1)+1) )

 

 3.   Utworzenie, w katalogu projektu, pliku build.ini z wymaganą przez nas początkową wartkością X numeru builda build=X. Wartość zapisywana odczytywana jest z sekcji version_control. Możemy również utworzyć pusty plik. W tej sytuacji aplikacja ustawi numer pierwszego builda na 1.

 

PowerBuilder i automatyczne numerowanie / wersjonowanie build-a



Zamiast pliku INI, do przechowywania informacji o wersji naszej aplikacji, można wykorzystać np. rejestr bądź nawet bazę danych. Mimo, iż każde z tych podejść oparte jest na powyższym rozwiązaniu, implementacja każdego z nich jest nieco bardziej skomplikowana.

Po tych zmianach, po każdej kompilacji obiektu n_buildno wartość zmiennej II_BUILD_NUMBER będzie odpowiednio zwiększana i reprezentowała będzie aktualny numer builda.
Rozwiązanie to działa dzięki temu, iż PowerBuilder ewaluuje wartości przypisywane do zmiennych podczas kompilacji.

 

Przykładowe pokazuje poniższa linijka kodu:


st_buildno.text = "Build #: " + string(gn_buildno.II_BUILD_NUMBER)

 

gdzie gn_build no jest zmienna globalna zadeklarowana następująco:

 

n_buildno gn_buildno
Tagi




PowerBuilder Tetris
D - Tetris



Programowanie iOS

C# ToolBox

SQL / TSQL / PLSQL ToolBox

Linux / Unix ToolBox





Zaprzyjaznione Strony

Sprite Bandits

Cake Time