LIBXL: ohne fpqcall und ot4xb möglich ?
Moderator: Moderatoren
- BJelinek
- Rekursionen-Architekt
- Beiträge: 221
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 3 Mal
LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo zusammen.
Kann man LIBXL auch ohne fpqcall und ot4xb nutzen ?
Kann man EXTERN in der 2.0 verwenden ?
Hat das jemand schon gemacht ?
Über Tipps und Hinweise würde ich mich sehr freuen.
Kann man LIBXL auch ohne fpqcall und ot4xb nutzen ?
Kann man EXTERN in der 2.0 verwenden ?
Hat das jemand schon gemacht ?
Über Tipps und Hinweise würde ich mich sehr freuen.
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14689
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 89 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo Bernd,
da kann ich nur zu EXTERN was sagen. Nein, nicht auch in 2.0. Sondern nur in 2.0. Das hat Alaska mit irgend einem der Updates dort eingeführt. Ich benutze das, klappt hervorragend.
Jan
da kann ich nur zu EXTERN was sagen. Nein, nicht auch in 2.0. Sondern nur in 2.0. Das hat Alaska mit irgend einem der Updates dort eingeführt. Ich benutze das, klappt hervorragend.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- BJelinek
- Rekursionen-Architekt
- Beiträge: 221
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 10 Mal
- Danksagung erhalten: 3 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo Jan,
auch mit LIBXL ?
Wenn ja, dann kann ich mich mal an umbauen wagen.
Danke für die Info.
auch mit LIBXL ?
Wenn ja, dann kann ich mich mal an umbauen wagen.
Danke für die Info.
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Ja, mit EXTERN ist einiges besser geworden, aber wenn man einen Pointer zurückbekommt (wie z.B. von QPDF), muss man doch noch mit ot4xb peeken.
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12931
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 48 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
hi Bernd,
deine Frage zu Ot4xb bezieht sich ja auf LibXL aber der Zweck war doch ein XLSx Sheed zu erzeugen welches mit Daten aus einer DBF "gefüttert" wurde.
anbei xBase Code mit HMG Syntax was aber leicht mach Xbase++ umzusetzen ist ( z.b. Syntax Progressbar)
ALLES was ActiveX OOP Syntax angeht ist 100% kompatible.
Unterschiede ergeben sich aus UTF8 und Codepage der DBF
der Code kann mit INSERT oder ADO Recordset arbeitenwenn Office installiert ist die jeweilige xxxx Version installiueren damit die "selbe" Runtime verwendet wird
Microsoft Access Database Engine xxxx Redistributable
hier link für v2010
https://www.microsoft.com/en-us/downloa ... n&id=13255
deine Frage zu Ot4xb bezieht sich ja auf LibXL aber der Zweck war doch ein XLSx Sheed zu erzeugen welches mit Daten aus einer DBF "gefüttert" wurde.
anbei xBase Code mit HMG Syntax was aber leicht mach Xbase++ umzusetzen ist ( z.b. Syntax Progressbar)
ALLES was ActiveX OOP Syntax angeht ist 100% kompatible.
Unterschiede ergeben sich aus UTF8 und Codepage der DBF
der Code kann mit INSERT oder ADO Recordset arbeiten
Code: Alles auswählen
FUNCTION ADOxlsxWrite( ... )
SET CENTURY ON
SET DATE GERMAN
oConnect := CreateObject( "ADODB.Connection" )
bError := ERRORBLOCK( { | oErr | BREAK( oErr ) } )
BEGIN SEQUENCE
oConnect:Execute( "DROP TABLE " + myXlsFile )
END SEQUENCE
ERRORBLOCK( bError )
// ---------------------- Catalog -------------------------- *
oCatalog := CreateObject( "ADOX.Catalog" )
oCatalog:ActiveConnection := 'Provider=Microsoft.ACE.OLEDB.12.0;' + ;
'Data Source=' + myXlsFile + ';' + ;
'Extended Properties="Excel 12.0 Xml";'
// ---------------------- Create Table --------------------- *
oTable := CreateObject( "ADOX.Table" )
oTable:Name := "Sheet1"
ii := 1
FOR ii := 1 TO iMax
cField := aStructure[ ii ] [ DBS_NAME ]
cType := aStructure[ ii ] [ DBS_TYPE ]
nLen := aStructure[ ii ] [ DBS_LEN ]
nDec := aStructure[ ii ] [ DBS_DEC ]
oColumn := CreateObject( "ADOX.Column" )
oColumn:Name := cField
DO CASE
CASE cType = "C"
oColumn:Type := adVarWChar
oColumn:DefinedSize := nLen
oColumn:Attributes := 2 // adColNullable
CASE cType = "M"
oColumn:Type := adLongVarWChar
oColumn:Attributes := 2 // adColNullable
CASE cType = "N"
oColumn:Type := adDouble
oColumn:DefinedSize := nLen
oColumn:NumericScale := nDec
CASE cType = "D"
oColumn:Type := adDate
CASE cType = "L"
oColumn:Type := adBoolean
ENDCASE
oTable:Columns:Append( oColumn )
NEXT
// add Table to Catalog
oCatalog:Tables:Append( oTable )
oConnect:ConnectionString = 'Provider=Microsoft.ACE.OLEDB.12.0;' + ;
'Data Source=' + myXlsFile + ';' + ;
'Extended Properties="Excel 12.0 Xml";'
oConnect:open()
SetProperty( "ExportDbf", "ProgressBar_1", "Value", 0 )
DO EVENTS // harbour
// #define Use_INSERT .T.
#ifdef Use_INSERT
// ---------------------- INSERT INTO ---------------------- *
// prepare String for Fields
cSelect := "( "
ii := 1
FOR ii := 1 TO iMax
cField := aStructure[ ii ] [ DBS_NAME ]
cSelect += cField
IF ii < iMax
cSelect += ", "
ENDIF
NEXT
cSelect += " ) "
// now start
nStart := SECONDS()
GO TOP
DO WHILE !EOF()
ii := 1
cSql := "INSERT INTO [Sheet1] " + cSelect + "VALUES ( "
FOR ii := 1 TO iMax
cField := aStructure[ ii ] [ DBS_NAME ]
cType := aStructure[ ii ] [ DBS_TYPE ]
nPosi := FIELDPOS( cField )
xValue := FIELDGET( nPosi )
DO CASE
CASE cType = "C"
xValue := "'" + STRTRAN( xValue, "'", " " ) + "'"
CASE cType = "M"
IF LEN( xValue ) > 64
xValue := "'Memo'"
ELSE
xValue := "'" + STRTRAN( xValue, "'", " " ) + "'"
ENDIF
CASE cType = "D"
IF EMPTY( xValue )
xValue := "0"
ELSE
// xValue := DTOC( xValue )
// xValue := DTOS( xValue ) + "000001"
// xValue := HB_STOT( DTOS( xValue ) + "000000" )
// xValue := serial2dt(xValue )
xValue := STR( dt2serial( xValue ) )
ENDIF
CASE cType = "L"
xValue := IF( xValue = .T., "TRUE", "FALSE" )
CASE cType = "N"
xValue := STR( xValue )
ENDCASE
cSql += xValue
IF ii < iMax
cSql += ","
ENDIF
NEXT
cSql += ")"
oConnect:Execute( cSql )
onDummy( TIME(), cSql )
nRowLine ++
IF ( nRowLine % nEvery ) = 0
nProz := CalcPos( nRowLine, nMax )
IF nProz > 100
nProz := 100
ENDIF
SetProperty( "ExportDbf", "ProgressBar_1", "Value", nProz )
DO EVENTS
ENDIF
SKIP
ENDDO
#ELSE
// ---------------------- ADO Recordset -------------------- *
// ALTD()
objRS := CreateObject( "ADODB.Recordset" )
objRS:Open( "Select * from [Sheet1]", oConnect, adOpenKeyset, adLockOptimistic )
// now start
nStart := SECONDS()
GO TOP
DO WHILE !EOF()
aField := {}
aValue := {}
ii := 1
FOR ii := 1 TO iMax
cField := aStructure[ ii ] [ DBS_NAME ]
cType := aStructure[ ii ] [ DBS_TYPE ]
nPosi := FIELDPOS( cField )
xValue := FIELDGET( nPosi )
IF EMPTY( xValue )
DO CASE
CASE cType = "C"
xValue := " "
CASE cType = "M"
xValue := " "
CASE cType = "N"
xValue := 0.00
CASE cType = "D"
xValue := CTOD( " . . " )
CASE cType = "L"
xValue := .F.
ENDCASE
ENDIF
AADD( aField, cField )
AADD( aValue, xValue )
NEXT
objRS:AddNew( aField, aValue )
objRS:Update() // objRS:UpdateBatch()
nRowLine ++
IF ( nRowLine % nEvery ) = 0
nProz := CalcPos( nRowLine, nMax )
IF nProz > 100
nProz := 100
ENDIF
SetProperty( "ExportDbf", "ProgressBar_1", "Value", nProz )
DO EVENTS // harbour
ENDIF
SKIP
ENDDO
objRS:Close()
objRS := NIL
#ENDIF
oConnect:Close()
oConnect := NIL
nStop := SECONDS() - nStart
onDummy( TIME(), "finish after " + LTRIM( STR( nStop ) ) )
oCatalog := NIL
oTable := NIL
oColumn := NIL
hb_cdpSelect( cOldLang )
SetCursorWait( "WinLeft", .F. )
SetCursorWait( "WinRight", .F. )
DO EVENTS // harbour
// Msginfo( "finish after " + LTRIM( STR( nStop ) ) )
RETURN .T.
Microsoft Access Database Engine xxxx Redistributable
hier link für v2010
https://www.microsoft.com/en-us/downloa ... n&id=13255
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Ich habe mir die Beschreibung von EXTERN genauer angesehen.
Man kann hier genau angeben, welchen Datentyp man Xbase++ gegenüber zurückgeben möchte, auch z.B. STRING oder DOUBLE Rückgabewerte !
Allerdings aktuell mit einer Ausnahme von BOOL => .t. .f.
Bei LibXL wie bei den meisten mir bekannten, Sprachen gibt es keinen Datentyp logisch, sondern nur LONG, die 0 (falsch) oder ungleich 0 (wahr) sind.
Ein gewöhnlicher Compiler kann also mit der Rückgabe LONG direkt ein IF wahr oder falsch THEN ansteuern.
Meine Idee war nun, wenn wir das noch könnten, müsste es möglich sein eine fast automatische Übersetzung der anderen Beispiele (Basic INC oder C/C++ ) hinzubekommen.
Auf jeden Fall wäre das einfacher als die Wartung meiner Klasse - an der ich aktuell wieder Anpassungen vornehme - und bei der Anwendung würde man die Beispiele direkt nutzen können.
Das ist nun als PDR anerkannt worden und man kann es zwischenzeitlich auch umgehen (eine CH Datei für LibXL sollte möglich sein):
https://www.alaska-software.com/scripts ... PDRID=7385
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
hast du das ausprobiert ? Laut Doku sollte der Rückgabewert STRING genügen.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9459
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 374 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Das habe ich noch nicht ausprobiert, mache ich mal, danke für den Hinweis.
Herzlich,
Tom
Tom
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Kann ich nur empfehlen, auf EXTERN umzustellen, Ot4xb ist dazu nicht mehr nötig, 1 Komponente weniger
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2526
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Genau so ist es. Ein Peek ist nicht mehr erforderlich. Nur noch wie es vorher auch war, das Umwandeln des Zeichensatzes ANSI / OEM.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- AUGE_OHR
- Marvin
- Beiträge: 12931
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 48 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
kann man unter v2.x jetzt Windows Structure(n) anlegenMarcus Herz hat geschrieben: ↑Mi, 10. Mär 2021 15:57 Kann ich nur empfehlen, auf EXTERN umzustellen, Ot4xb ist dazu nicht mehr nötig, 1 Komponente weniger
klar das geht mit BAP ... aber auch nur 1-Dim ...
ob ein "Umwandlung" und Rückgabe als String die Sache "übersichtlicher" macht ...
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
nicht mit BAP, da war hier vor kurzem ein Beispiel ... es hat sich mit EXTERN viel getan
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12931
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 48 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
hi,
ich habe über L&L mit EXTERN und ""xpprt2.ch" gelesen das nun wohl einiges "mehr" mit Xbase++ v2.x möglich ist.
ich habe über L&L mit EXTERN und ""xpprt2.ch" gelesen das nun wohl einiges "mehr" mit Xbase++ v2.x möglich ist.
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2526
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Ich habe mir schon oft überlegt ot4xb zu entfernen. Vieles der Funktionen aus ot4xb wäre nun auch mit Xbase möglich.
Leider gibt es in Xbase z.B. keinen Ersatz für die Funktion lCallFuncPA( <cFunktionName>, { para1, para2 .....} )
Damit kann eine zur Runtime vorhandene Xbase Funktion mit Parametern aufgerufen werden.
Sicher könnte man dies mit einem Macro Aufgerufen werden, jedoch benötigt ein solcher Aufruf 40% mehr Ausführungszeit!!
Der Umbau bedeutet aber auch sehr viel Aufwand fürs Umschreiben und Testen nur um eine Komponente einzusparen, macht das wirklich Sinn???
Leider gibt es in Xbase z.B. keinen Ersatz für die Funktion lCallFuncPA( <cFunktionName>, { para1, para2 .....} )
Damit kann eine zur Runtime vorhandene Xbase Funktion mit Parametern aufgerufen werden.
Sicher könnte man dies mit einem Macro Aufgerufen werden, jedoch benötigt ein solcher Aufruf 40% mehr Ausführungszeit!!
Der Umbau bedeutet aber auch sehr viel Aufwand fürs Umschreiben und Testen nur um eine Komponente einzusparen, macht das wirklich Sinn???
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Code: Alles auswählen
#xtranslate
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2526
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo Werner
Wie soll denn das gehen?
Ein endloses "do case" Konstrukt würde gehen.
Der Aufruf der Funktion ist dynamisch, also der benötigte/gewünschte Funktionsname ist zur Zeit des Kompilierens nicht bekannt jedoch vorhanden. er wird zur Laufzeit als String geliefert.
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Marcus Herz
- 1000 working lines a day
- Beiträge: 878
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 40 Mal
- Danksagung erhalten: 202 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Wenn es eine xbase DLL ist, dynamisch geladen, kannst du doch h immer ein Template erzeugen; können mit dllloaf. Bin Grad am Handy und kann das nicht prüfen. Geht dann nicht sogar ein makro Aufruf: &(cfunx).()
Gruß Marcus
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Servus Carlo,
ich hab mir den Syntax von lCallFuncPA( <cFunktionName>, { para1, para2 .....} ) nicht angesehen, aber mittels #xtranslate kannst doch den Aufruf umsetzen?
ich hab mir den Syntax von lCallFuncPA( <cFunktionName>, { para1, para2 .....} ) nicht angesehen, aber mittels #xtranslate kannst doch den Aufruf umsetzen?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Ich frag mich für was man die brauchen sollte, ich kann mich nicht erinnern diese verwendet zu haben.
Aus Xbase++ ruft man doch nur die Funktionen der LibXL.DLL auf.
Aus Xbase++ ruft man doch nur die Funktionen der LibXL.DLL auf.
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2526
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo zusammen
Die Funktion lCallFuncPA() ist eine in C geschriebene Funktion in den ot4xb diese kann xbase Funktionen aufrufen die in der EXE drin sind.
Die hat nichts mit der LIBXL zu tun sondern mehr mit dem für und wieder die ot4xb / fpqcall zu ersetzen und den zugehörigen Sorgen und Funktionen die mit Xbase dann nicht gehen.
Sicher kann man einem Macro einen Codeblock generieren und mit eval() ausführen, nur ist dann die Leistung des Programm sehr viel kleiner weil der Umweg übers Makro so viel Zeit wegfrisst dass das Programm wesentlich an Performance verliert.
Vom Konzept her gibt es keine DLL's mit xbase Programmteilen.
Das geht dann auch ein Template oder ein #xtranslate nicht.
Oder sehe ich da etwas nicht????
Die Funktion lCallFuncPA() ist eine in C geschriebene Funktion in den ot4xb diese kann xbase Funktionen aufrufen die in der EXE drin sind.
Die hat nichts mit der LIBXL zu tun sondern mehr mit dem für und wieder die ot4xb / fpqcall zu ersetzen und den zugehörigen Sorgen und Funktionen die mit Xbase dann nicht gehen.
Sicher kann man einem Macro einen Codeblock generieren und mit eval() ausführen, nur ist dann die Leistung des Programm sehr viel kleiner weil der Umweg übers Makro so viel Zeit wegfrisst dass das Programm wesentlich an Performance verliert.
Vom Konzept her gibt es keine DLL's mit xbase Programmteilen.
Das geht dann auch ein Template oder ein #xtranslate nicht.
Oder sehe ich da etwas nicht????
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2151
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 31 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Servus Carlo,
ah, ok, ich hab zur Runtime überlesen. Du hast quasi einen Interpreter in Deinem Programm. Da hilft natürlich ein #xtranslate nicht.
Sorry.
ah, ok, ich hab zur Runtime überlesen. Du hast quasi einen Interpreter in Deinem Programm. Da hilft natürlich ein #xtranslate nicht.
Sorry.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- AUGE_OHR
- Marvin
- Beiträge: 12931
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 48 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
hi
was Carlo sucht ist ein #translate welche im die Ot4Xb Syntax nach EXTERN von der v2.x bringt
in der v19x mit DllCall
die bekommt man das mit #translate nach EXTERN "übersetzt"
was Carlo sucht ist ein #translate welche im die Ot4Xb Syntax nach EXTERN von der v2.x bringt
Code: Alles auswählen
hItem := @USER32:SendMessageA(hTreeView,TVM_INSERTITEM,0,oStruct)
Code: Alles auswählen
hItem := DllCall("USER32.DLL",DLL_OSAPI,"SendMessageA",hTreeView,TVM_INSERTITEM,0,oStruct)
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2526
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 79 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Hallo Jimmy
es gibt leider in Xbase++ keine Möglichkeit auch mit EXTERN nicht um eine Funktion Aufzurufen die sich in der selben EXE befindet.
OT macht diesen Call durch nachschauen in der Funktion/Adresstabelle der zur Laufzeit bekannten Funktionen.
Den C Sourcecode findest du im Sourcecode der ot4xb Tools im File Container.cpp ...
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15734
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 77 Mal
- Danksagung erhalten: 40 Mal
- Kontaktdaten:
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
Ich verstehe nicht warum es nicht gehen sollte, eine Funktion in der eigenen EXE oder Xbase++ DLL aufzurufen ???
Entweder ich starte die direkt im Quellcode oder über ein Macro Was übersehe ich ?
Entweder ich starte die direkt im Quellcode oder über ein Macro Was übersehe ich ?
Code: Alles auswählen
1. direkt im Quellcode ...
if ...
MeineFunktion()
2.
cCode := "MeineFunktion("+...+")"
bCode := &(cCode)
eval(... bCode )
function MeineFunktion(...)
...
return ...
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12931
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 48 Mal
Re: LIBXL: ohne fpqcall und ot4xb möglich ?
ist LIBXL eine Xbase++ DLL ...
es geht doch um "fremde" DLL in Xbase++ anzusprechen, oder ?
gruss by OHR
Jimmy
Jimmy