Français
Forum

LibXL de xlware.com

 

Christof
Neuß
Salut,

hat sich déjà la fois quelqu'un avec qui DLL LibXL befasst?
avec cela peux on direct sur Exceldateien (aussi xlsx et xlsm) zugreifen et cet Travailler.

Fichiers ouvrir et Textes reinschreiben peux je déjà, mais je verzweifle momentan à den Funktionen, qui une numéro dans un cellule écrivons ou bien une Wert auslesen. cela peux doch pas so schwer son.

Ist pour mich intéressant, là quelques Anwender de Programmen Excel gar pas plus bistrot installiert avons et qui Bearbeitung sur ActiveX pas plus funktioniert.

merci...!!!
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
si oui déjà cela wesentliche klappt :
quoi steht car dans qui Doku de qui DLL ?
comment sommes car qui Übergabe - paramètre ?

Quelque chose comme scheitert la plus part du temps, si le Übergabe
qui paramètre faux ist. veux appeler, si vous
per référence ou bien per Wert transfert volonté.

chez den payons sais je maintenant pas oui c'est ca, si là
Profan aussi per Ref. übergibt. Notfalls fois le
trop übergebene numéro dans une Bereich écrivons
et cette ensuite transfert. cela gleiche gilt aussi
beim Lesen.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




RGH
Hakllo,

cela Problem ist ici, dass qui Funktion zum écrivons qui numerischen Werte un Double (64 Bit) comme Wert (byVal) erwartet. dans 32-Bit-XProfan sommes mais alle paramètre chez einem API-Aufruf 32-Bit breit. avec einer kleinen Zusatz-Procédure peut wir mais un Double sur deux LongInts verteilen et cet transfert. Einer API-Funktion ist es égal si qui 64 Bit comme un paramètre ou bien comme deux paramètre überegeben volonté. Es doit arrêt 64 Bit son, qui là venons:
Déclarer Handle hLibxl, book, sheet
hLibxl = ImportDLL("libxl.dll", »)
set("CallConv","CDECL")

proc xlSheetWriteNumD

    parameters handle s, longint x,y , double d, handle f
    declare longint d1, d2, memory md
    dim md, 8' un Double hat 8 Byte = 64 Bit
    md = addr(d)' cela Double wird sur den Bereich gemappt
    d1 = long(md,0)' qui ersten quatre Bytes venons pour d1
    d2 = long(md,4)' qui zweiten quatre Bytes venons pour d2
    xlSheetWriteNumA(s, x, y, d1, d2, f)

endproc

cls
book = xlCreateBookCA()

IF book

    sheet = xlBookAddSheetA(book, "sheet1", 0)

    IF sheet

        xlSheetWriteStrA(sheet, 2, 2, "Hello, World!", 0)
        xlSheetWriteNumD(sheet, 3, 1, 1000, 0)

    ENDIF

    xlBookSaveA(book, "example.xls")
    MessageBox("File Written", », 0)
    xlBookReleaseA(book)

ENDIF

WaitInput
FIN

So funktioniert es! là beim Lecture cela gleiche Problem auftaucht, sollte on numerische Werte comme String auslesen et ensuite avec VAL transformer.

Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.03.2016  
 




Christof
Neuß
c'est oui la fois wieder genial

à peine allez on 'ne Std. joggen, um cela Hirn wieder quelque chose trop lüften, déjà findet on ici une Hinweis, qui weiterhilft. DANKE Roland. cela hat déjà la fois bien geklappt.

malheureusement suis je im Umgang avec DLL toujours Laie et verzweifle plus...

Schau' la fois:
Déclarer Handle hLibxl, book, sheet
hLibxl = ImportDLL("libxl.dll", »)
set("CallConv","CDECL")
Var Dossier$="Test1.xls"
Var Gelesen$=»

proc xlSheetWriteNumD

    parameters handle s, LONGint x,y , double d, handle f
    declare longint d1, d2, memory md
    dim md, 8' un Double hat 8 Byte = 64 Bit
    md = addr(d)' cela Double wird sur den Bereich gemappt
    d1 = long(md,0)' qui ersten quatre Bytes venons pour d1
    d2 = long(md,4)' qui zweiten quatre Bytes venons pour d2
    xlSheetWriteNumA(s, x, y, d1, d2, f)

endproc

cls
book = xlCreateBookCA()
xlBookLoadA(book, Dossier$)

IF book

    'sheet = xlBookAddSheetA(book, "sheet1", 0)
    sheet = xlBookGetSheetA(book, 0)

    IF sheet

        xlSheetWriteStrA(sheet, 2, 2, "Hello!", 0)
        xlSheetWriteNumD(sheet, 3, 1, 1000, 0)
        Gelesen$=xlSheetReadStrA(sheet, 9,0)
        Imprimer Gelesen$

    ENDIF

    xlBookSaveA(book, "Test1.xls")
    xlBookReleaseA(book)

ENDIF

Imprimer "FERTIG!"
WaitInput
FIN

Gelesen$ wird zwar bestückt, mais je erhalte quelque chose comme comment une Pointer, ou bien? comment vais je car avec cela um? Hab' déjà cela une ou bien autre ausprobiert, mais je trouve es pas raus.

et beim Zahlenauslesen comme Text - quoi je grundsätzlich verstehe - stellt sich qui Frage, si qui Funktion xlSheetReadStr() chez einer "Zahlenzelle" überhaupt funktioniert.

déjà la fois wieder un großes DANKE...

40 kB
Hochgeladen:15.03.2016
Downloadcounter74
Download
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
Soweit je cela vois, wird là encore un Format
avec retour :


Reads a string and its format à partir de cell


Müßtest du la fois ausprobieren, si là un Bereich
pas besser wäre :
Bereich# = xlSheetReadStrA(sheet, 9,0)

si qui DLL-Funktion un Nullbyte derrière den String mets,
ist es oui simple, avec String$(Bereich#, 0) à den String trop
venons.

Roland :
Könnte il zur Übergabe de payons pas aussi
Double(N&) ou bien QuadInt
prendre ? qui sommes doch 64Bit breit.

Ansonsten probier es la fois avec Bereich#. là bekommt on
on oui aussi avec Float(V, A) une 64Bit - Wert.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




Christof
Neuß
Hi,

Textes et Formeln auslesen peux je maintenant déjà la fois. cela allez relativ simple avec
Gelesen&=xlSheetReadStrA(sheet,10,0)
Imprimer STRING$(Gelesen&,0)
Gelesen&=xlSheetReadFormulaA(sheet,11,0)
Imprimer STRING$(Gelesen&,0)

chez payons funktioniert cela mais malheureusement pas.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




H.Brill
prends mais lieber la fois Bereiche :
Déclarer Memory Bereich' ou bien Bereich#
Faible Bereich, 256

Gelesen& est un normaler LongInt.
cela klappt zwar dessus, weil beides
qui Variablen-Adresse beinhaltet, ist
mais pas so de Roland beabsichtigt
et peux durchaus la fois manquer.

Mach besser :

quoi encore allez, est un Pointer.

chez payons peux cela aussi pas marcher.
ici doit on qui Bereichsfunktionen Float(V,A)
ou bien Long(V, A) benutzen. qui String$() - Funktion
liest solange, jusqu'à entweder un Nullbyte venez
ou bien jusqu'à à l' cela Ende des Bereichs. et Zahlenwerte
avons nunmal ne...aucune Nullbyte.
 
Benutze XPROFAN X3 + FREEPROFAN
Wir sind die XProfaner.
Sie werden von uns assimiliert.
Widerstand ist zwecklos!
Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.

Was die Borg können, können wir schon lange.
15.03.2016  
 




Christof
Neuß
Merci pour den Hinweis. Ok, hab' s sur Bereiche umgestellt. Im STR-Bereich alles comment auparavant et - malheureusement - aussi im Zahlenbereich. Es funktioniert pas. égal, quoi je aussi probiere...

So geht's pas...
Gelesen#=xlSheetReadNumA(sheet, 3,1,0)
ZahlGelesen&=Float(Gelesen#,0)
Imprimer ZahlGelesen&

... avec ZahlGelesen&=Long(Gelesen#,0) geht's aussi pas. je bekomme seulement Fehlermeldungen.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




RGH
Zum String-Bereich: il muss pas dimensioniert volonté, là qui API-Funktion ca dans diesem le cas erledigt.

Zum Lesen de payons: ici ist cela Problem, dass aussi qui Rückgabewert einer API-Funktion im 32-Bit-XProfan seulement un 32-Bit-Wert (LongInt, Bereich, Handle ou bien Double) son peux, quoi pour qui gesamte Windows-API zutrifft. qui Funktion qui DLL liefert mais chez numerischen Werten une Double (64 Bit) zurück, quoi avec XProfan eh bien la fois pas allez. AUch cela Auislesen comme String funktioniert pas, là qui Funktion, comme aussi dans qui Documentation steht, NULL zurückliefert, si dans qui cellule ne...aucune String ist

Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.03.2016  
 




Christof
Neuß
allô Roland,

merci pour qui Info. tant pis. mais ensuite brauche je pas plus trop essayer. Momentan brauche je tats. seulement qui Lesefunktion pour Cordes. cela reicht oui ensuite. malheureusement peux ich's ensuite pas pour autre Anwendungen nutzen.
 
XProfan X3
Win10 16 GB RAM
15.03.2016  
 




RGH
il y a une Solution, qui mais pas entier aufwandsarm ist:

dans Delphi une Wrapper-DLL écrivons, qui ensuite avec Single arbeitet et qui Double comme String zurückliefert, etc. j'ai pour mich la fois so une DLL geschrieben, qui zur Zeit seulement qui Funktionen aus meinem Beispiel contient. chez qui Gelegenheit habe je qui Aufrufkonvention aussi de CDECL pour STDCALL gewandelt. avec cela sieht cela Beispiel maintenant so aus et funktioniert einwandfrei:

chez WriteNum wird qui Funktion single() verwandt, avec cela qui numéro 1000 pas comme Integer transfert wird. on pourrait mais aussi 1000.0 écrivons ou bien direct une variable des Typs SINGLE transfert.

Es wäre alors machbar, une Wrapper-DLL trop écrivons, qui alle Funktionen qui Original-DLL contient. une autre Possibilité wäre, une Wrapper-DLL seulement pour qui Funktionen trop écrivons, qui Double ls paramètre conservé et/ou bien Double zurückliefern. cela wäre quelque chose moins aufwendig.

Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
16.03.2016  
 




Christof
Neuß
allô Roland,

comment Du déjà écris... "nicht entier aufwandsarm".
et cela gilt pas seulement pour, qui zusätzliche DLL-trop realisieren, mais aussi pour mon dans qui Jahre gekommene Anwendung, qui je assez umbauen devrait. cela Problem ist u.a., dass je sur native Funktionen pour un paire schnelle Dateifunktionen zurückgreife et ici encore avec XPSE compiliere. qui wiederum ist mais pas so entier ami avec einigen XProfan X3-Funktionen et so führt une zum anderen... Hätte je maintenant 100 zahlende Kunden serait es mich aussi pas empêcher, cela - relativ kleine - Programme entier récente trop écrivons. mais il y a seulement une Handvoll Kunden et es wird wahrscheinlich bientôt entier eingestellt volonté. je verzichte maintenant sur une Plausibilitätsprüfung et ensuite läuft's aussi sans Excelaufruf par.

cela Thema "Zugriff sur Exceldateien" beschäftigt mich mais plus. peut-être vais je la fois sur XLware trop et frage, si es une Solution gibt (z.B. Num-Werte comme String trop lesen).

EIN Grund pour mich seinerzeit avec XProfan anzufangen était aussi, aufgrund qui Mächtigkeit qui Discours, nahezu aucun weitere DLL einsetzen trop doit. si cela so rester soll, muss je autre Opportunités trouver.

Vorerst vielen Dank à alle, qui ici mitgedacht et geholfen avons.
 
XProfan X3
Win10 16 GB RAM
17.03.2016  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

14.939 Views

Untitledvor 0 min.
H.BrillGestern (17:18)
Christof Neuß05.12.2018
p.specht28.11.2018
Jens-Arne Reumschüssel22.05.2018
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie