ndFpCall() aus ot4xb

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

ndFpCall() aus ot4xb

Beitrag von Jan »

Hallo,

gibt es in Xbase++ eigentlich inzwischen einen Ersatz für Pablos ndFpCall()? "Call a STDCALL or CDECL function returning a 64 bit floating point value from a provided function pointer, converting the parameters as required. "

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von brandelh »

Bei dem neuen Befehl kann man auch den Datentyp der Rückgabe angeben.

EXTERN LONG GetWindowText( nHWND AS LONG, @cTxt AS STRING, nCnt AS LONG ) IN WIN32API

gibt eine LONG zurück, wie bisher dllcall.
Wenn eine Funktion nun eine DOUBLE zurückgeben will, muss man dieses Keyword DOUBLE als 2. Parameter verwenden und der Rückgabewert wird eine Xbase++ Fließkommazahl sein.
Gruß
Hubert
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Hallo Jan

es scheint als möchtest du auf ot4xb verzichten... Hat das spezielle Gründe?

Man könnte selbst eine C DLL mit den benötigten Call's schreiben. Nur macht das Sinn? ot4xb bietet sehr viel "now how" nur schon mit den ganzen Strukturen....

Du hast doch einen "speziellen" Draht zu Alaska, eigentlich würde eine soclhe Funktionsgruppe wie Sie ot4xb bietet schon längst zur Grundausstattung von xbase gehören, hast du da mal nachgefragt?

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Moin Hubert,

danke für den Code und die Erklärung. Muß ich mir mal näher ansehen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Carlo,

ja, möchte ich.

Einerseits ist das ein Bauchgefühl. Mir behagt das seit einiger Zeit einfach nicht mehr. Es gab da ein paar unschöne Erlebnisse.

Andererseits konnte ich bislang alles, was ich früher mal per ot4xb machen musste, inzwischen auch mit Xbase++ pur machen. Es gibt jetzt nur noch einen einzigen Aufruf in meinem eigenen Projekt, der die ot4xb braucht - eben genau 1x die ndFpCall(). Wenn ich die raus haben kann, könnte ich die dll ebenfalls komplett rauswerfen, und muß die in meinem Installationspaket nicht mehr mitliefern.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von brandelh »

Kannst du die eine ungewünschte Zeile zeigen ... dann schauen wir mal :-)
Gruß
Hubert
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Hallo Jan
Es gab da ein paar unschöne Erlebnisse.
Könntest du einige Details nennen? Ich frage nur aus Vorsehung (Vorsicht).....

Wie hast du den das mit den Structuren gelöst?

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Carlo,

möchte ich nicht. Das war etwas zwischen mir und Pablo. Hat nicht direkt etwas mit ot4xb zu tun. Und ich möchte solche Sachen auch nicht in die Öffentlichkeit tragen.

Wobei ich sagen muß das ich manche Funktionen aus ot4xb, die ich früher drin hatte, gerne rausgenommen hatte als Alaska etwas adäquates geliefert hatte. Weil Pablos Funktionen in dem Fall sehr langsam waren. Die haben mir damals den A... gerettet, weil ich das sonst nicht hätte programmieren können.und es hat auch korrekt funktioniert. Aber es war halt recht langsam.

Und prinzipiell ist es halt so das ich gerne so wenig Extra-Bibliotheken mitschleppe wie möglich - nenne es persönliche Marotte, ist halt so. Und wenn die ot4xb einzig nur noch wegen eines einzelnen Aufrufes einer einzigen Funktion drin ist, dann würde ich das Relikt natürlich auch noch gerne ersetzen können. Wenn möglich.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Hubert,

ob das wirklich hilft :-D :

Code: Alles auswählen

tw  := ndFpCall( ::gTw, ::oPdf, txt )
Das ist aus Edgars PDF-Klasse.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Hallo Jan
möchte ich nicht. Das war etwas zwischen mir und Pablo. Hat nicht direkt etwas mit ot4xb zu tun. Und ich möchte solche Sachen auch nicht in die Öffentlichkeit tragen.
Das ist richtig so. Ich habe auch nicht persönlichen Angelegenheiten gemeint sondern Technische. Bzw. ob sich da evtl. technische Probleme abzeichnen.

Ich interpretiere deine Anwort so dass es keine Technischen Probleme waren bezw. gibt.
Und prinzipiell ist es halt so das ich gerne so wenig Extra-Bibliotheken mitschleppe wie möglich
Verstehe ich. Würde ich wenn es nur noch 1 Funktion ist vermutlich auch so machen. ndFpCall() habe ich an hunderten stellen im Code zudem noch die Strukuren. Das alles zu ersetzten wird für mich nicht einfach.

Welche der Funktionen hast du in ot4xb langsam gefunden?

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Carlo,

HTTP-Zugriffe. JSON fand ich auch recht langsam, aber das war eventuell auch nur mal sporadisch auf dem betreffenden Rechner so. Und ist beides auch schon mehrere Jahre her, das kann sich also auch inzwischen geändert haben. Ich weiß nicht, ob Pablo da Zwischendurch auch immer mal wieder dran geht. Auf jeden Fall gibt es zu beiden Funktionen inzwischen sehr gute Sachen in Xbase++, und da ich da ohnehin was dran zu tun hatte, habe ich das auch inzwischen umgeschrieben. HTTP schon etwas länger, JSON jetzt gerade. Das waren die beiden großen Brocken. Und da jetzt nur noch dieser eine Aufruf da ist, kam der Gedanke auf den auch irgend wie zu "eliminieren".

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von brandelh »

Jan hat geschrieben: Di, 03. Jul 2018 10:01 Hubert,

ob das wirklich hilft :-D :

Code: Alles auswählen

tw  := ndFpCall( ::gTw, ::oPdf, txt )
Das ist aus Edgars PDF-Klasse.

Jan
du fummelst in Edgars Klasse rum ;-) ...

ndFpCall() entspricht nFpCall(), die von der Funktion ähnlich dem DLLCALL() in Xbase++ ist.
Nur der Rückgabewert ist eben eine DOUBLE statt einer LONG.

Code: Alles auswählen

ndFpCall( <fp> , params ... ) -> n64BitFloatResult
-
nFpCall( <fp> , params ... ) -> n32BitResult
Parameters:
<fp>
If numeric must be a function pointer like the result of nGetProcAddress().
If a string must be the result of DllPrepareCall()
<params ... >
Required parameters of the called function.
::gTw ist also entweder ein STRING mit dem Funktionsnamen oder einem Funktionspointer, das weiß ich jetzt so natürlich nicht ;-)
::oPdf ist entweder das Handle auf die DLL (umbenannte QuickPDF DLL), oder ein Objekt.
txt die restlichen Parameter der Funktion

es scheint so, als ob Edgar die Aufrufe in die QuickPDF DLL über eine allgemeine Schnittstelle schiebt.
EXTERN beschreibt eigentlich die externe Schnittstelle im einzelnen und man greift auf diese Funktion zu, nicht einfach zu übersetzen.
Hinzu kommt, dass FpCall sich selbst um die Aufrufkonvention kümmert.

Eigentlich wäre das ein Job für Edgar ... seine Klasse auf 2.00.xxx und EXTERN anzupassen, damit die ot4xb nicht mehr benötigt wird.
Gruß
Hubert
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Hallo Jan

danke für deine Ausführungen.

Ich verwende nur UTF/Dll-Calls mit allen Extras und Json Funktionen aus den OT. Als ich JSON benötigte war das mit OT die am schnellsten ablaufende Lösung. EIn Parser in Xbase geschrieben der wirklich nur mit dem vorhandenen JSON umgehen könnte lief wesentlich längsamer.

Gibts von Alaska eine Beschreibung zu JSON ? Auf den ersten Blick habe ich nichts gefunden. Dazu muss ich jedoch noch sagen ich verwende die Workbench nicht und habe Sie auf dem Arbeitsrechner auch nicht installiert.

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Carlo,

JSON kam mit dem vorletzten (?) Update. Die Funktionen gab es schon wesentlich länger, aber undokumentiert. Jetzt sind die aber auch in der Onlinehilfe drin und offiziell zur Nutzung freigegeben. Such mal nach Json2Var() und Var2Json(). Alaska überführt den JSON-String in ein DataObject, was sehr schon abzuarbeiten ist. Das ist dann in der Handhabung ähnlich wie Pablo das macht.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Jan

Danke. In der Tat. In der Onlinehilfe der Workbench sind die JSON Befehle kurz erwähnt auch dass SIe jetzt benutzbar sind.

Einige Code-Samples von Alaska wären noch schön gewesen dann könnte man diese Funktionen auch verwenden.

So beginnt ja nur "Jugend Forscht" ....


Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Carlo,

ja, Alaska ist in letzter Zeit recht knapp mit Hilfetexten und Samples geworden. da ich mich aber in den vergangenen Tagen intensiv damit auseinander gesetzt habe - wenn Du Fragen hast, helf ich dir gerne weiter. Ist aber gar nicht so schwer. Wenn man die Fallstricke beachtet, die ich hier in einem anderen Thread gepostet habe.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: ndFpCall() aus ot4xb

Beitrag von AUGE_OHR »

IHMO ist die ganze LIB von Edgar mit ot4xb geschrieben also benötigt die DLL es ebenfalls.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Jimmy,

nein. Nur dieser eine Aufruf.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: ndFpCall() aus ot4xb

Beitrag von AUGE_OHR »

Jan hat geschrieben: Di, 03. Jul 2018 19:58 nein. Nur dieser eine Aufruf.
ich spreche von der LIB/DLL und nicht von dem Aufruf im Demo Source ...
oder hast du den Source zu Edgars PDF-Lib :?:
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von brandelh »

das hat er vor Jahren erwähnt, aber ich kann mich auch täuschen :wink:
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Ich habe. Woher sonst hätte ich denn sonst die Codezeile haben sollen?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von brandelh »

JAN, am Besten fragst du Edgar ob es möglich ist ...
Gruß
Hubert
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: ndFpCall() aus ot4xb

Beitrag von ramses »

Es ist doch eigentlich ganz einfach.
Wenn du den Code hast, ohne diesen könntest du ja nichts ändern, kannst du doch herausfinden was mit welchen Werten aufgerufen wird und was als Rückgabewert zurückkommt. MIt diesen Infos kannst du dann weiter Entscheiden.

ja, Alaska ist in letzter Zeit recht knapp mit Hilfetexten und Samples geworden. da ich mich aber in den vergangenen Tagen intensiv damit auseinander gesetzt habe - wenn Du Fragen hast, helf ich dir gerne weiter.
Danke für dein Angebot. Ich habe Momentan andere Dringerende Dinge auf der TODO Liste. Ich belasse meine JSON Behandlung vorläufig wo Sie ist in OT4XB. Der zwingend erforderliche Test nach einer evtl. Umstellung/Änderung der Schnittstelle ist auch nicht ganz einfach ...

Nachtrag:
Wenn ich die Sorgen un Probleme mit der Alaska JSON Lösung an anderer Stelle lese ist es sicher weit besser weiter die Funktionen aus OT4XB zu verwenden und vorerst nicht über den Wechsel zu nicht bemusterten Xbase-Funktionen nachzudenken. Denn die ganze OT4XB funktioniert seit JAHREN einwandfrei ..... DANKE AN PABLO!!!

Gruss Carlo
Valar Morghulis

Gruss Carlo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: ndFpCall() aus ot4xb

Beitrag von AUGE_OHR »

habe Antwort von Edgar bekommen
as I recall, there are some functions in the c++ library that I use, and in order to get the correct return value, it was better (easier) to use this function, I don't remember now the specifics, I would have to go thru the code ....

...
c++ returns the value as "double", so ndFpCall converts to a xbase number
wenn ihr euch die xpppdf52.dll anseht steht unter Copyright : Debenu

Edgar benutzt "Quick PDF Library"
http://www.debenu.com/products/developm ... f-library/
und den "Wrapper" dazu findet man bei Pablo. ( TQuickPdf718.zip )

wenn man es auf "pure" Xbase++ bringen will müsste man also den "Wrapper" neu schreiben ...
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ndFpCall() aus ot4xb

Beitrag von Jan »

Jimmy,

mit der Bibliothek erzählst Du uns allen nichts neues. Und ich habe gestern Abend Dein etwas peinliches (und falsches) Posting in der Alaska-NG gelesen.

Hubert hat übrigens auch einen Wrapper dafür geschrieben. Kann man hier im Mitgliederbereich des Forums finden.

Und ob man Edgars kompletten Wrapper umschreiben muß sei mal dahin gestellt. Es gibt, soweit ich das gesehen habe, ja nur diesen einen Aufruf einer ot4xp-Funktion darin.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Antworten