Seite 1 von 1

#include "xpprt2.ch"

Verfasst: Di, 02. Mär 2021 16:34
von Marcus Herz
Hi
Dank Andreas hab ich diesen Header entdeckt. Das ist das Äquivalent zur BinaryAccessPackeage von 1.9. Oder das was man von Ot4Xb kennt:
Damit kann eine Struktur in Xbase verarbeitet werden.
Eine Struktur, z.B.

Code: Alles auswählen

 typedef struct
  {
  UINT        _nSize;
  UINT_PTR       _nUserParam;
  LPCSTR        _pszProjectFileName;
  LPCSTR        _pszOriginalProjectFileName;
  UINT        _nPages; // 0 for 'unlimited'
  UINT        _nFunction;
  HWND        _hWnd;
  HANDLE        _hEvent;
  LPCSTR        _pszExportFormat;
   BOOL        _bWithoutDialog;
  } scLlDesignerPrintJobA;
kann jetzt mir Xbase++ so aufgelöst werden

Code: Alles auswählen

DEFINE  STRUCTURE LLDesignerPrintJob
	VAR _nSize AS UINTEGER
	VAR _nUserParam AS UINTEGER
	VAR _pszProjectName AS @STRING
	VAR _pszOriginalProjectFileName AS @STRING
	VAR _nPages AS UINTEGER
	VAR _nFunction AS UINTEGER
	VAR _hWnd AS UINTEGER
	VAR _hEvent AS UINTEGER
	VAR _pszExportFormat AS @STRING
	VAR _bWithoutDialog AS UINTEGER
ENDDEFINE 
Man bekommt eine Klasse. In Xbase sieht dies so aus:

Code: Alles auswählen

oCallback	:= LLDesignerPrintJob():New(pointer)
oCallback:_pszExportFormatFromVar()  // löst pointer auf String auf !!
// für jedes Char-Element gibt es eine *FromVar Methode
// es gibt sogar *ToVar
// Numerische Werte mit get/set:
oCallback:get_hevent()
oCallback:set_hevent(5)
Ich bin noch am austesten und suchen, was sich da noch alles verbirgt. Es gibt leider keine Doku dazu. Aber der Header wird ausgeliefert, darf also verwendet werden.
Ob man die Struktur ändern und zurückgeben kann, hab ich noch nicht erforscht.

Re: #include "xpprt2.ch"

Verfasst: Mi, 03. Mär 2021 8:22
von Marcus Herz
Es scheint ganz einfach zu sein, in eine Struktur zu schreiben: ergänzend zum obigen Beispiel:

Code: Alles auswählen

oCallback:set_hevent(5)
oCallbak:_pszOriginalProjectFileNametovar("Hello World")
Die Werte stehen sofort in der Struktur. Es braucht anscheinend gar kein write oder finalize oder s.ä.
Scheint, als brauche man dazu kein ot4xb mehr

Re: #include "xpprt2.ch"

Verfasst: Mi, 03. Mär 2021 10:41
von Tom
Danke, Marcus. Zusammen mit EXTERN und einigen anderen Erweiterungen kommen wir dann wohl wirklich zu dem Punkt, an dem man Sachen wie OT4XB und BAP weglassen kann, was mir sehr gefiele (obwohl beides seit Jahren gute Dienste leistet).

Re: #include "xpprt2.ch"

Verfasst: Fr, 05. Mär 2021 19:51
von ramses
Tom hat geschrieben: Mi, 03. Mär 2021 10:41 Zusammen mit EXTERN und einigen anderen Erweiterungen kommen wir dann wohl wirklich zu dem Punkt,
Hallo Tom

hast du schon intensiv mit EXTERN gearbeitet? Keine sonderbaren Ereignisse gehabt?

Re: #include "xpprt2.ch"

Verfasst: Sa, 06. Mär 2021 17:16
von Marcus Herz
Ich habe alles, was in meinem Zugriff liegt, umgestellt. Wenn man sich die #translate ansieht, erkennt man, dass es ein qualifiziertes Laden der Funktion gibt, sprich deklarierte Paramter. Ohne Extern ist das wohl nicht der Fall, wird wohl eher zur Laufzeit interpretiert, was da an Datentypen ankommt. Im Falle von den Callback Funktionen mit ListLabel funktioniert das nur noch so.