You are not logged in.

Dear visitor, welcome to Palo Community Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Modzho

Intermediate

  • "Modzho" is male
  • "Modzho" started this thread

Posts: 7

Date of registration: Jun 26th 2010

Location: Latvia

  • Send private message

1

Tuesday, May 24th 2011, 2:25am

Palo c Library Bindings for Pascal

Palo c Library Bindings for Pascal
24.05.2011
This package is a Pascal language translation of the Palo library header files (*.h) (Palo version 3.1)

hotfile.com

Edit:
rapidshare.com

This post has been edited 2 times, last edit by "HIGH-Zen" (Dec 14th 2012, 6:11pm)


v_malicevic

Palo Team

  • "v_malicevic" is male

Posts: 454

Date of registration: Oct 26th 2005

Location: Germany

  • Send private message

2

Tuesday, May 24th 2011, 2:13pm

RE: Palo c Library Bindings for Pascal

Quoted

Originally posted by Modzho
Palo c Library Bindings for Pascal
24.05.2011
This package is a Pascal language translation of the Palo library header files (*.h) (Palo version 3.1)

hotfile.com


Hello Modzho,
Very interesting post! I personally didn't give it a spin, but if Palo community finds this useful, we could add this to user contributed content within Palo SF.net project.

Did you develop any applications on top of this?
Mit freundlichen Gruessen/ With kind Regards / Meilleures salutations

Vladislav Malicevic
Head of Research and Development

Jedox AG

Modzho

Intermediate

  • "Modzho" is male
  • "Modzho" started this thread

Posts: 7

Date of registration: Jun 26th 2010

Location: Latvia

  • Send private message

3

Tuesday, May 24th 2011, 7:00pm

Hello!
That would be great, if you add this to user contributed content. Maybe someone finds this useful, especially those who develop with Lazarus IDE (FPC). Maybe one day someone could write Palo database components for Lazarus.

Yes, I develop budgeting application. My aim is lightweight Palo client application. Now work on it is in very early stage. I newer used Pascal before, but I learned Pascal and translated this headers in 3 weeks. I think Lazarus is very good free visual programming environment.

PALO server is good MOLAP database and perfectly fits my needs.

Reason to develop client application with Lazarus/Free Pascal is -
# Palo Excel addin does not fit my needs, database users will not learn how to use addin. So if elements in dimensions changes (and changes is very often), I must change all used Excel tables myself.
# Palo Suite web sheets - for our data is very slow (v3.1 used), and problem with element changes remains.
# I will not install Excel addin on every remote PC that uses database.
# Because it is free (I have no budget for commercial IDE e.g. Visual Studio .NET)
# Pascal is easy to learn good programming language.
# It is cross-platform.
# And IDE is awesome.

Now I am trying to figure out, what controls can best fit my needs TDataset or VirtualTreeview or some other control (I am new to Delphi/Lazarus/Pascal).

So I will try to do my best.

P.S.
Pardon my French, English is not my native language.

v_malicevic

Palo Team

  • "v_malicevic" is male

Posts: 454

Date of registration: Oct 26th 2005

Location: Germany

  • Send private message

4

Wednesday, May 25th 2011, 9:41am

Is there any particular reason why you based your Pascal bindings on (outdated) 3.1 SDK? Our client libraries as well SDK are always up-to-date(currently 3.2 SR2).
Mit freundlichen Gruessen/ With kind Regards / Meilleures salutations

Vladislav Malicevic
Head of Research and Development

Jedox AG

Modzho

Intermediate

  • "Modzho" is male
  • "Modzho" started this thread

Posts: 7

Date of registration: Jun 26th 2010

Location: Latvia

  • Send private message

5

Wednesday, May 25th 2011, 4:01pm

At the beginning when I plan to use Web sheets I see that this is last community version with Report Manager.
Without Report Manager Web sheets work almost like Excel add-in do. Only big difference is browser usage instead MS Excel.
I make some patches myself (*.js files), to fix some bugs and add some features.
# In SelectionWizard bugfix (don't remember now all this stuff, but think there was empty panel where data must be present somewhere at Variable Mapping and Template Mapping)
# In propertiesWindow, groupListView, autoScroll:true
# Enabled and tested freeze panes, then disabled.

Then I figured out that Web Sheets with large data is slow (I know this is not Palo problem, but JSON) and lack of easy adding new elements to sheet. Then I revert to Excel add-in, because much better performance.
Problem with element adding remained. But I was out of time, database users needed database for data right now, and I designed rapidly sheets with Excel VBA.

At that time database was designed to work with this version 3.1. And I stick with it. In near future I don't plan to switch to new version. Because - if it ain't broke, don't fix it.
I have all functions I need for client application in this version of Palo.

Edit:
All documentation for server that I wrote myself I have for this version, and I have no time to mess with it again.

P. S.
And as i see in forum, people prefer to downgrade to v 3.1 After downgrade to 3.1
If he can't even create a new database, that's ridiculous. New version is worse than old? In my opinion v 3.1 is the best. :D

P.P.S.
Is that the way free software movement intended to be -
cut basic existing features that worked very well in community edition and make it like some useless demonstation software?

This post has been edited 5 times, last edit by "Modzho" (May 26th 2011, 2:39pm)


Modzho

Intermediate

  • "Modzho" is male
  • "Modzho" started this thread

Posts: 7

Date of registration: Jun 26th 2010

Location: Latvia

  • Send private message

6

Thursday, September 15th 2011, 10:27am

Update

2 units:

1. palocomm.pas
PaloConnection class
(main class to use for communication with the Palo server)
procedures:
-GetData
-SetData
-Ping
-DimensionAddOrUpdateDimElement
-DimElementDelete
-DimElementMove
-DimensionListElements
-DimElementListConsolidated
-ElementInformation

2. commhelper.pas
CommHelperBasic class
procedure:
- GetDimElementInfoTreeList: TList

http://hotfile.com/dl/129842937/adb846f/…update.zip.html

P.S.
In Lazarus KGrid 1.7 is best controls to use with Palo.

:!: Edit:
A better approach is to use Palo Web API in the similar way as Python Palo Interface .

e.g.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
function TPaloDimension.GetAttributeCubeName: string;
var
  CMD: string;
  Url: string;
  HTML: string;
begin
  if Length(AttrCubeID) <= 0 then
  begin
	GetAttributeCubeName := '';
	Exit;
  end;

  CMD := 'cube/info';
  HTML := '';

  Params.Values['database'] := Database.ID;
  Params.Values['cube'] := AttrCubeID;
  Params.Values['sid'] := Database.server.Sid;

  Url := Database.server.ServerRoot + CMD;
  HTML := Database.server.IdHTTP1.Post(Url, Params, Enc, Enc, Enc);
  strfns.ExplodeStr(HTML, ';', Res);

  GetAttributeCubeName := StripFirstNLastChar(Res.Strings[1]);

  Params.Clear;
  Res.Clear;
end;

function TPaloCube.GetValue(Coordinates: TStringList): string;
var
  CMD: string;
  Url: string;
  HTML: string;

  i, j: integer;
begin
  CMD := 'cell/value';
  HTML := '';

  Params.Values['database'] := Database.ID;
  Params.Values['cube'] := ID;
  Params.Values['path'] := JoinStr(GetElementsID(Coordinates), ',', False);
  Params.Values['sid'] := Database.server.Sid;

  Url := Database.server.ServerRoot + CMD;
  HTML := Database.server.IdHTTP1.Post(Url, Params, Enc, Enc, Enc);
  strfns.ExplodeStr(HTML, ';', Res);

  // check for ';' in Value field of cell/value result
  if Res.Count > 4 then
  begin
	i := Res.Count - 4;
	for j := 0 to i - 1 do
	begin
  	Res.Strings[2] := Res.Strings[2] + ';' + Res.Strings[j + 3];
	end;
  end;

  // if it is string
  if (Length(Res.Strings[2]) > 2) and (Res.Strings[2][1] = '"') then
  begin
	Res.Strings[2] := StripFirstNLastChar(Res.Strings[2]);
	Res.Strings[2] := StringReplace(Res.Strings[2], '""', '"', [rfReplaceAll]);
  end;

  GetValue := Res.Strings[2];

  Params.Clear;
  Res.Clear;
end;

This post has been edited 1 times, last edit by "HIGH-Zen" (Dec 14th 2012, 6:21pm)


Rate this thread