Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
jus
Beiträge: 50
Registriert: Fr 6. Mai 2011, 13:29

Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Beitrag von jus »

Hallo,
ich kämpfe gerade damit in Lazarus ein Google Spreadsheet zu verwenden. Google scheint laut Logdatei auch schon die angeforderten Zellen in Form von JSON zurückzusenden.

Code: Alles auswählen

Response : 200 : OK
Headers:
HTTP/1.0 200 OK
Content-Type: application/json; charset=UTF-8
Vary: X-Origin
Vary: Referer
Date: Tue, 03 Dec 2019 01:15:12 GMT
Server: ESF
Cache-Control: private
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000
Accept-Ranges: none
Vary: Origin,Accept-Encoding
 
Body:
{
  "range": "Tabellenblatt1!A1:B2",
  "majorDimension": "ROWS",
  "values": [
    [
      "Menge",
      "Artikel"
    ]
  ]


Leider kommt es bei der Verarbeitung der JSON Daten zu einer kryptischen Fehlermeldung:

Code: Alles auswählen

[Debugger Exception Notification]
 
Project calendardemo raised exception class 'ERESTAPI' with message:
TValueRange: unsupported array element type :
 
 At address 1001BE884


Ich würde gerne auf die betroffenen Dateien in \fpcsrc\packages\googleapi\src\googlesheets.pp und weitere in diesem Verzeichnis zugreifen und auch zu Debugzwecke ändern, aber ich weiß nicht wie ich das machen soll, da die Sourceänderungen darin nicht vom Lazarus berücksichtigt werden. Wie kann man die Sourcen in \fpcsrc\packages\googleapi\src\googlesheets.pp ändern? :?:

lg,
jus

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Beitrag von wp_xyz »

Grundsätzlich ist von eigenen Änderungen am mitgelieferten Code abzuraten, denn beim nächste Update ist alles wieder futsch. Und Änderungen an irgendwas im fpcsrc-Ordner werden beim Übersetzen deines Projekts üblicherweise nicht berücksichtigt, weil Lazarus den Pfad zu den fpc-Dateien nicht kennt.

Ausnahmsweise, weil googleapi wahrscheinlich (?) nirgendwo von FCL/LCL/usw benutzt wird, also keine andere Unit davon abhängt, könntest du den Ordner googleapi als Unterordner in dein Projekt kopieren und in den Suchpfad des Projekts aufnehmen. Wenn du nun dein Projekt kompilierst wird nicht mehr das Original in fpcsrc verwendet, sondern die Kopie in deinem Projekt. Damit kannst du die googleapi-Sourcen nach beliebig ändern, und die Änderungen bleiben auch nach einem FPC-Update bestehen (allerdings kriegst du auch keine Fixes dafür...).

Bitte teile hier mit, wenn du eine Möglichkeit gefunden hast, ein Google-Spreadsheet einzulesen. Ich könnte dann versuchen, das Google-Dateiformat in fpspreadsheet einzubauen.

jus
Beiträge: 50
Registriert: Fr 6. Mai 2011, 13:29

Re: Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Beitrag von jus »

wp_xyz hat geschrieben:...
Ausnahmsweise, weil googleapi wahrscheinlich (?) nirgendwo von FCL/LCL/usw benutzt wird, also keine andere Unit davon abhängt, könntest du den Ordner googleapi als Unterordner in dein Projekt kopieren und in den Suchpfad des Projekts aufnehmen. Wenn du nun dein Projekt kompilierst wird nicht mehr das Original in fpcsrc verwendet, sondern die Kopie in deinem Projekt. Damit kannst du die googleapi-Sourcen nach beliebig ändern, und die Änderungen bleiben auch nach einem FPC-Update bestehen (allerdings kriegst du auch keine Fixes dafür...).
...

Vielen Dank für den Tipp! Jetzt kann ich da einbisschen debuggen. :)

Aktueller Stand:
Ich habe das das JSON Verarbeitungs-Problem jetzt einbisschen eingrenzen können. Es scheint so zu sein, dass die Methode "procedure TBaseObject.SetArrayElements(AP : Pointer; ET: PTypeInfo; AValue: TJSONArray)" in restbase.pp keine Arrays (tkdynarray) verarbeiten kann.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Beitrag von wp_xyz »

Ich weiß nicht, ob das mit deinem Problem zu tun hat. Aber heute wurde in FPC-trunk der Bug "Google APIs not working" (https://bugs.freepascal.org/view.php?id=35436) behoben.

jus
Beiträge: 50
Registriert: Fr 6. Mai 2011, 13:29

Re: Wie \fpcsrc\packages\googleapi\src\*.pp neu kompilieren?

Beitrag von jus »

wp_xyz hat geschrieben:Ich weiß nicht, ob das mit deinem Problem zu tun hat. Aber heute wurde in FPC-trunk der Bug "Google APIs not working" (https://bugs.freepascal.org/view.php?id=35436) behoben.

Vielen Dank für den Hinweis. Vermutlich hat es damit zu tun, dass ich den Michael Van Canneyt direkt in der Mailinglist angeschrieben habe :wink: . Er war so nett und hat sich der Sache angenommen.
Durch den genannten Fix sollten die Demos (\lazarus\components\googleapis\demo\) wieder im aktuellen Trunk kompilierbar sein. Leider kommt es aber bei der Verarbeitung der JSON Daten von Googles Rückantwort bei Google Spreadsheet immer noch wie in früheren Beitrag erwähnt zu einer Exception. Bzgl. der Exception bei JSON Verarbeitung bin ich in Mailkontakt mit Michael Van Canneyt. Er hat versprochen, dass er sich meldet, wenn er Zeit hat es zu testen.

Antworten