#include "xpprt2.ch"

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

Antworten
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

#include "xpprt2.ch"

Beitrag 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.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #include "xpprt2.ch"

Beitrag 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
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: #include "xpprt2.ch"

Beitrag 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).
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: #include "xpprt2.ch"

Beitrag 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?
Valar Morghulis

Gruss Carlo
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: #include "xpprt2.ch"

Beitrag 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.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten