Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [IB/FB] UDFs ? (https://www.delphipraxis.net/66154-%5Bib-fb%5D-udfs.html)

webcss 25. Mär 2006 23:49

Re: [IB/FB] UDFs ?
 
Wenn Du etwas tiefer in die Materie UDF Programmierung mit Delphi einsteigen willst: UDF-Tutorial

Lemmy 26. Mär 2006 17:31

Re: [IB/FB] UDFs ?
 
Hi Hansa,

auf meiner Seite gibts dazu auch was (Serverprogrammierung von IB/FB).

Auf was Du achten musst: Wenn Du mit Strings arbeitest musst Du für Speicher sorgen! Du übergibst hier Strings an ein C/C++ Programm!
Grüße
Lemmy

Hansa 26. Mär 2006 18:50

Re: [IB/FB] UDFs ?
 
Lemmy, das ist mir schon klar. Und Deine Tutos sind längst ausgedruckt und abgeheftet. :thumb: Bzw. liegt das eine noch hier rum. :mrgreen: Eine offene Frage (siehe oben) ist noch, ob das FREE_IT alleine ausreicht den Speicher wieder freizugeben.

webcss 26. Mär 2006 19:48

Re: [IB/FB] UDFs ?
 
Alsooo, FREE_IT benutzt du in verbindung mit der speicherallozierung mit ib_util_malloc, und eigentlich nur dann notwendigerweise, wenn du strings verarbeitest und zurückgibst.
GetMem aus Delphi funktioniert anders als ib_util_malloc welches speziell eine c++ allozierung vornimmt.

Wenn du "nur" einen numerischen (z.b. integer) wert zurückgibst bzw. als parameter (fester länge) hin und zurück gibst, kannst du das result by_reference oder by_value (nicht zu empfehlen!) übergeben und abholen, da hier immer dieselbe speicheradresse verwendet wird und die größe konstant ist.

Mit Strings wie gesagt musst du den speicher mit ib_util_malloc allozieren und in deiner UDF-Dekalration mit FREE_IT wieder freigeben, sonst gibt's schrott und das ganze ist nicht mehr threadsafe!

Hansa 26. Mär 2006 20:10

Re: [IB/FB] UDFs ?
 
Mich stört halt folgendes : in IBExpert steht bei Return Mechanism "by reference" und die CheckBox für FREE_IT ist angekreuzt. In der DDL von der UDF (echtes computerchinesisch) :mrgreen: ist nur das FREE_IT zu sehen. Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.

webcss 26. Mär 2006 22:20

Re: [IB/FB] UDFs ?
 
Zitat:

Zitat von Hansa
Mich stört halt folgendes : in IBExpert steht bei Return Mechanism "by reference" und die CheckBox für FREE_IT ist angekreuzt. In der DDL von der UDF (echtes computerchinesisch) :mrgreen: ist nur das FREE_IT zu sehen.

by reference ist der Standardmechanismus bei IB/FB.
Zitat:

Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.
Definitiv zum allozieren von Speicher für chararrays(=strings), sonst gibts Speichersalat. :drunken:
Hier ist noch ein extensives Tutorial und schau dir mal den Quellcode von anderen UDF-Bibliotheken an.

Lemmy 27. Mär 2006 06:46

Re: [IB/FB] UDFs ?
 
Guten Morgen Hansa,

Zitat:

Zitat von Hansa
Und Du meinst, beim Erstellen der DLL muß man das IB_UTIL_ALLOC verwenden, oder wie ? Dann muß ich mal gucken.


Du solltest wirklich nochmal das Tutorial anschauen ;-) Genau das steht drin! Du brauchst die Funktion damit Du den Speicher belegen kannst - ansonsten wird das Ding Deinen PC abschißen!

Lemmy


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz